email trong php google smtp

Gửi email trong PHP sử dụng google smtp

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

gui mail trong php dung google smtp

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

gui mail google smtp

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

gui mail trong php google smtp

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 !

3 bình luận

  1. 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…

  2. Sao mình chèn code xong nó báo không thấy file phpmailerautoload.php

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *