Trong bài viết Gửi mail trong PHP, mình có hướng dẫn các bạn cách để gửi một email sử dụng hàm mail mặc định có sẵn trong PHP. Hôm nay trong bài viết này mình sẽ giới thiệu đến các bạn một cách gửi email khác đó là gửi mail trong PHP sử dụng google smtp thông qua thự viên dùng để gửi mail gọi là PHPMailer
1. Cấu hình google smtp để có thể gửi email
Đầu tiên để có thể gửi được email sử dụng google smtp, bạn cần phải cấu hình lại tài khoản smtp của mình như sau:
Bước 1 : vào link sau : https://myaccount.google.com/?pli=1 và đăng nhập với tài khoản google của bạn, bạn sẽ được giao diện như hình dưới đây
Kéo xuống dưới các bạn hãy chắc chắn mục 2-Step Verification đã chuyển sang Off
Bước 2 : Bên thanh sidebar bên tay trái các bạn click vào mục Connected apps & sites bên dưới mục cha là Sign-in & security, các bạn sẽ thấy mục Allow less secure apps , hãy mở nó ở chế độ ON như hinh dưới
Như vậy là chúng ta đã cấu hình tài khoản google cần thiết để có thể gửi mail trong php
2. Tiến hành code gửi email.
a. Download mã nguồn PHPMailer
Đầu tiên chúng ta cần download mã nguồn PHPMailer về và sử dụng tại đây : https://github.com/PHPMailer/PHPMailer . Sau khi download về, các bạn giải nén vào thư mục chứa code để có thể sử dụng
b. Code trang gui_email_smtp.php
Mở trình soạn thảo, đặt tên file là gui_email_smtp.php có nội dung như sau :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Gửi email thông qua SMTP google trong PHP</title> <link href="css/style.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="main"> <h1>Gửi email thông qua google smtp</h1> <div id="login"> <h2>Gmail SMTP</h2> <hr/> <form action="gui_email_smtp.php" method="post"> <input type="text" placeholder="Vui lòng nhập email của bạn" name="email"/> <input type="password" placeholder="Mật khẩu" name="password"/> <input type="text" placeholder="To : Email của bạn " name="toid"/> <input type="text" placeholder="Subject : " name="subject"/> <textarea rows="4" cols="50" placeholder="Vui lòng nhập nội dung email ..." name="message"></textarea> <input type="submit" value="Gửi" name="send"/> </form> </div> </div> <?php require 'PHPMailerAutoload.php'; if(isset($_POST['send'])) { $email = $_POST['email']; $password = $_POST['password']; $to_id = $_POST['toid']; $message = $_POST['message']; $subject = $_POST['subject']; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = $email; $mail->Password = $password; $mail->addAddress($to_id); $mail->Subject = $subject; $mail->msgHTML($message); if (!$mail->send()) { $error = "Mailer Error: " . $mail->ErrorInfo; echo '<p id="para">'.$error.'</p>'; } else { echo '<p id="para">Message đã gửi!</p>'; } } else{ echo '<p id="para">Vui lòng nhập đúng thông tin</p>'; } ?> </body> </html>
Ở đoạn code trên, các bạn chủ ý vào form gửi email của chúng ta như sau :
<form action="gui_email_smtp.php" method="post"> <input type="text" placeholder="Vui lòng nhập email của bạn" name="email"/> <input type="password" placeholder="Mật khẩu" name="password"/> <input type="text" placeholder="To : Email của bạn " name="toid"/> <input type="text" placeholder="Subject : " name="subject"/> <textarea rows="4" cols="50" placeholder="Vui lòng nhập nội dung email ..." name="message"></textarea> <input type="submit" value="Gửi" name="send"/> </form>
Ở đây chúng ta đã tạo các field để điền thông tin email/mật khẩu người gửi và thông tin người nhận bao gồm email, tiêu đề, và nội dung email.
Tiếp đến đoạn code sau :
Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!
<?php require 'PHPMailerAutoload.php'; if(isset($_POST['send'])) { $email = $_POST['email']; $password = $_POST['password']; $to_id = $_POST['toid']; $message = $_POST['message']; $subject = $_POST['subject']; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = $email; $mail->Password = $password; $mail->addAddress($to_id); $mail->Subject = $subject; $mail->msgHTML($message); if (!$mail->send()) { $error = "Mailer Error: " . $mail->ErrorInfo; echo '<p id="para">'.$error.'</p>'; } else { echo '<p id="para">Message đã gửi!</p>'; } } else{ echo '<p id="para">Vui lòng nhập đúng thông tin</p>'; } ?>
có nhiệm vụ lấy thông tin từ các field chúng ta đã tạo ở trên, và kết hợp với thư viện gửi email PHPMailer để chúng ta có thể gửi email khi ấn nút Gửi trong form trên.
Giải thích kĩ hơn để các bạn nắm từng đoạn code như sau :
Ở đoạn này sẽ require thư viện gửi email PHPMailer vào để có thể sử dụng
require 'PHPMailerAutoload.php';
Đoạn này sẽ lâý thông tin mà chúng ta đã nhập từ form
$email = $_POST['email']; $password = $_POST['password']; $to_id = $_POST['toid']; $message = $_POST['message']; $subject = $_POST['subject'];
Khởi tạo đối tượng PHPMailer
$mail = new PHPMailer;
Sử dụng smtp google
$mail->Host = 'smtp.gmail.com';
Port number của google, các bạn có thể để mặc định là 587
$mail->Port = 587;
Định dạng mã hóa là tls
$mail->SMTPSecure = 'tls';
Email người gửi
$mail->Username = $email;
Mật khẩu người gửi
$mail->Password = $password;
Thông tin người nhận
$mail->addAddress($to_id); $mail->Subject = $subject; $mail->msgHTML($message);
Tiến hành gửi email
if (!$mail->send()) { $error = "Mailer Error: " . $mail->ErrorInfo; echo '<p id="para">'.$error.'</p>'; } else { echo '<p id="para">Message đã gửi!</p>'; } } else{ echo '<p id="para">Vui lòng nhập đúng thông tin</p>'; }
c. Gắn css cho cái form gửi email đẹp đẹp tí
Mở trình soạn thảo tạo file style.css có nội dung như sau:
@import url(https://fonts.googleapis.com/css?family=Raleway); h1{ text-align:center; //color: black; font-size: 2em; margin-top: 40px; margin-bottom: 40px; } #main{ margin: 25px 100px; font-family: 'Raleway', sans-serif; } h2{ background-color: #FEFFED; text-align:center; border-radius: 10px 10px 0 0; margin: -10px -40px; padding: 30px 40px; color: black; font-weight: bolder; font-size: 1.5em; margin-top: -1px !important; // margin-bottom: -19px !important; } hr{ border:0; border-bottom:1px solid #ccc; margin: 10px -40px; margin-bottom: 30px; } #login{ width:580px; float: left; border-radius: 10px; font-family:raleway; border: 2px solid #ccc; padding: 0px 40px 0px; margin-top: 70px; //margin: 50px; margin: 0% 25%; } input[type=text],input[type=email],input[type=password]{ width:99.5%; padding: 10px; margin-top: 8px; border: 1px solid #ccc; padding-left: 5px; font-size: 16px; font-family:raleway; } textarea{ width:99.5%; padding: 10px; margin-top: 8px; border: 1px solid #ccc; padding-left: 5px; margin-bottom: 5px; font-size: 16px; font-family:raleway; } input[type=submit]{ width: 100%; background-color:#FFBC00; color: white; border: 2px solid #FFCB00; padding: 10px; font-size:20px; cursor:pointer; border-radius: 5px; margin-bottom: 40px; } #para{ clear: both; margin: 0 35%; }
Ok, bây giờ thử gửi một email nào đó và cảm nhận kết quả nhé. Nếu có bất kỳ thắc mắc thì hãy comment bên dưới và đừng quên Đăng ký nhận bài viết qua email , bên thanh sidebar bên phải của page để nhận các bài viết mới nhất nhé.
Chúc các bạn học tốt !
Bác hướng dẫn ko rõ phần up code phpmailer lên rồi! Cái này mà không hướng dẫn thì sao mấy bạn hiểu được dữ liệu được để ở đâu và lấy ra kiểu gì, cái gì cần lấy ra…
Sao mình chèn code xong nó báo không thấy file phpmailerautoload.php
Bác thanh bên trên có nói đến vấn đề này rồi đó bác.