PHPMailer là gì ? Hướng dẫn sử dụng PHPMailer dễ dàng nhất

Bạn có một website bán hàng online bạn muốn nhận được thông báo khi có đơn hàng mới? Bạn là chủ một blog đang được nhiều người quan tâm và người ta muốn nhận thông báo từ bạn mỗi khi có bài viết mới thông qua email? Hay đơn giản là bạn muốn nhận được mail thông báo từ form liên hệ. Thì bài viết dưới đây sẽ giúp bạn điều đó, bài viết này tổng hợp những nội dung về hướng dẫn sử dụng phpmailer một cách dễ dàng nhất.

PHPMailer là gì ?

PHPMailer là một thư viện mã để gửi Email một cách an toàn  đơn giản thông qua mã PHP từ một máy chủ Web. Gửi Mail trực tiếp bằng mã PHP yêu cầu mức độ quen thuộc cao với các chuẩn mực giao thức SMTP  các khó khăn liên quan  lỗ hổng về việc đưa Mail vào để gửi thư rác.

hướng dẫn sử dụng phpmailer
PHPMailer là gì ? 

Tại sao cần đến PHPMailer?

PHP có hỗ trợ hàm gửi Mail sẵn mặc dù vậy không hoàn toàn có thể gửi được cho tất cả mọi người. Các bạn có thể gặp tình huống khi gửi Mail là cái được cái không, Email của các bạn gửi đi có thể sẽ nằm trong mục spam hoặc sever của bạn đã bị chặn. lúc đó các bạn phải cần có những giải pháp để thay thế. Cách làm ở đây các bạn nên sử dụng một thư viện hỗ trỡ cho việc gửi Email trong PHP của bạn với cái tên PHPMailer.

Những tính năng của PHPMailer

  • Các bạn có thể gửi Mail thông qua giao thức SMTP
  • Các bạn hoàn toàn dùng Email cá nhân hoặc Email doanh nghiệp để gửi thông tin cho khách hàng của bạn để làm tăng chất lượng Mail của bạn.
  • Gửi Email với tốc độ nhanh ít lỗi & Email được chuyển vào thẳng inbox
  • Các bạn hoàn toàn sử dụng được cc, bcc & tệp tin đính kèm
  • Bên cạnh đó các bạn sẽ tương tác lại với khách hàng 1 cách dễ dàng. Các bạn sẽ nhận được Mail trong hộp thư đến của bạn.
hướng dẫn sử dụng phpmailer
Những tính năng của PHPMailer

Hướng dẫn dùng PHPMailer version 6x

Đầu tiên bạn phải cần tải về thư viện PHPMailer 6.05

Import thư viện

Bạn thực hiện import thư viện vào như sau, nhớ thay đổi đường dẫn tới mã nguồn mà bạn đã lưu nhé,  phải đặt đoạn code này ở trên cùng của tệp tin.

1
2
3
4
5
6
7
8
include APPPATH . "../storage/PHPMailer-master/src/PHPMailer.php";
include APPPATH . "../storage/PHPMailer-master/src/Exception.php";
include APPPATH . "../storage/PHPMailer-master/src/OAuth.php";
include APPPATH . "../storage/PHPMailer-master/src/POP3.php";
include APPPATH . "../storage/PHPMailer-master/src/SMTP.php";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Thự hiện gửi Mail

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP Password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient
$mail->addAddress('ellen@example.com'); // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
//Attachments
$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
//Content
$mail->isHTML(true); // Set Mail format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body in bold!';
$mail->AltBody = 'This is the body in plain text for non-HTML Email clients';
$mail->send();
echo 'Message has been sent';
catch (Exception $e)
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;

Hướng dẫn dùng PHPMailer Version 5x

trước tiên muốn dùng được bạn cần phải tải code của nó về đã.

Sau khi downnload về bạn giải nén nó ra bạn sẽ nhận được một vài file tuy vậy bạn chỉ cần dùng hai tệp tin đó là class.smtp.php & class.phpmailer.php còn những tệp tin khác bạn có thể nghiên cứu thêm trong số đó có một số mẫu ví dụng cũng hay lắm đó. Bây giờ bạn hãy coppy file đấy qua dự án của mình.

Sau khi đã có 2 file trên chúng ta cùng tạo 1 tệp tin có tên sendmail.php tất nhiên bạn đặt tền gì cũng được.

Và nội dung của tệp tin như sau.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//goi thu vien
include('class.smtp.php');
include "class.phpmailer.php";
$nFrom = "Freetuts.net"; //mail duoc gui tu dau, thuong de ten cong ty ban
$mFrom = 'xxxx@gmail.com'; //dia chi Mail cua ban
$mPass = 'passlamatkhau'; //mat khau Mail cua ban
$nTo = 'Huudepzai'; //Ten nguoi nhan
$mTo = 'dinhhuugt@gmail.com'; //dia chi nhan Email
$mail = new PHPMailer();
$body = 'Bạn đang phân tích tìm hiểu về cách gửi Email bằng php mailler trên freetuts.net chúc các bạn có những phút giây vui vẻ.'; // Noi dung Mail
$title = 'Hướng dẫn gửi Mail bằng PHPMailer'; //Tieu de gui Email
$mail->IsSMTP();
$mail->CharSet = "utf-8";
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sever gui Email.
$mail->Port = 465; // cong gui Mail de nguyen
// xong phan cau hinh bat dau phan gui Mail
$mail->Username = $mFrom; // khai bao dia chi Mail
$mail->Password = $mPass; // khai bao mat khau
$mail->SetFrom($mFrom, $nFrom);
$mail->AddReplyTo('info@freetuts.net', 'Freetuts.net'); //khi nguoi dung phan hoi se duoc gui den Email nay
$mail->Subject = $title;// tieu de Email
$mail->MsgHTML($body);// noi dung chinh cua Email se nam o day.
$mail->AddAddress($mTo, $nTo);
// thuc thi lenh gui Mail
if(!$mail->Send())
echo 'Co loi!';
else
echo 'mail của bạn đã được gửi đi hãy kiếm tra hộp thư đến để xem kết quả. ';
?>

Chỉ dễ dàng thế thôi, rất nhàn đúng không nào, bạn thử chạy file sendmail.php & mở hộp thư đến ra kiêm tra xem có nhận được Mail không nhé.

Hướng dẫn tạo hàm để gửi Email với PHPMailer

Như ở phần trên bạn đã gửi Mail thành công tuy nhiên giả sử trên trang Web của bạn bạn mong muốn gửi Mail ở nhiều chỗ, VD khi khách hàng liên lạc bạn cần gửi Email đến quản trị viên để thông báo. Khi có đơn hàng mới bạn phải cần gửi Email xác nhận đơn hàng  thông báo tới quản trị viên. Không lẽ bạn cứ phải ôm theo một mớ code như thế ném ở mọi file rõ ràng là không gọn gàn chút nào phải không nào.

Và ở phần này mình sẽ hướng dẫn các bạn để cho chúng vào một hàm & trong hàm này hơi khác phần trên một tí là mình có bổ sung thêm tính năng thêm địa chỉ cc. Thực tế thì dựa vào phần trên bạn hoàn toàn có thể tự tạo hàm cho riêng mình tuy vậy ở đây mình tạo mẫu cho các bạn chưa rành lắm về hàm có thể ứng dụng.Bạn hãy tạo một file functions.php để viết các hàm vào đó ở đoạn code sau tôi có tạo sẵn hai hàm 1 là hàm sendMail để gửi Mail bình thường không có file đính kèm  hai là hàm sendMailAttachment để gửi Email có kèm theo file đính kèm. Tất nhiên bạn có thể gộp chúng thành một hàm cũng được nhưng mình ước muốn tách làm hai hàm riêng biệt để cho cụ thể. Nội dung tệp functions.php như sau.

 

hướng dẫn sử dụng phpmailer
Hướng dẫn tạo hàm để gửi Email với PHPMailer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function sendMail($title, $content, $nTo, $mTo,$diachicc='')
$nFrom = 'Freetuts.net';
$mFrom = 'xxxx@gmail.com'; //dia chi Email cua ban
$mPass = 'passlamatkhau'; //mat khau Mail cua ban
$mail = new PHPMailer();
$body = $content;
$mail->IsSMTP();
$mail->CharSet = "utf-8";
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = $mFrom; // GMAIL username
$mail->Password = $mPass; // GMAIL Password
$mail->SetFrom($mFrom, $nFrom);
//chuyen chuoi thanh mang
$ccmail = explode(',', $diachicc);
$ccmail = array_filter($ccmail);
if(!empty($ccmail))
foreach ($ccmail as $k => $v)
$mail->AddCC($v);
$mail->Subject = $title;
$mail->MsgHTML($body);
$address = $mTo;
$mail->AddAddress($address, $nTo);
$mail->AddReplyTo('info@freetuts.net', 'Freetuts.net');
if(!$mail->Send())
return 0;
else
return 1;
function sendMailAttachment($title, $content, $nTo, $mTo,$diachicc='',$file,$filename)
$nFrom = 'Freetuts.net';
$mFrom = 'xxxx@gmail.com'; //dia chi Email cua ban
$mPass = 'passlamatkhua'; //mat khau Email cua ban
$mail = new PHPMailer();
$body = $content;
$mail->IsSMTP();
$mail->CharSet = "utf-8";
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = $mFrom; // GMAIL username
$mail->Password = $mPass; // GMAIL Password
$mail->SetFrom($mFrom, $nFrom);
//chuyen chuoi thanh mang
$ccmail = explode(',', $diachicc);
$ccmail = array_filter($ccmail);
if(!empty($ccmail))
foreach ($ccmail as $k => $v)
$mail->AddCC($v);
$mail->Subject = $title;
$mail->MsgHTML($body);
$address = $mTo;
$mail->AddAddress($address, $nTo);
$mail->AddReplyTo('info@freetuts.net', 'Freetuts.net');
$mail->AddAttachment($file,$filename);
if(!$mail->Send())
return 0;
else
return 1;
?>

Trong hàm trên mình có để cố định phần AddReplyTo vì theo chủ kiến cá nhân của mình chắc phần này thường cố định mặc dù vậy nếu hệ thống của bạn gồm nhiều bộ phận thì có thể nó sẽ khác nhau bạn từ điều chỉnh cho nó phù hợp.

Bây giờ bạn quay lại tệp sendmail.php viết code như sau để test nhé.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//goi thu vien
include('class.smtp.php');
include "class.phpmailer.php";
include "functions.php";
$title = 'Hướng dẫn gửi Mail bằng phpmailer';
$content = 'Bạn đang phân tích tìm hiểu về cách gửi Mail bằng php mailler trên freetuts.net chúc các bạn có những phút giây vui vẻ.';
$nTo = 'Huudepzai';
$mTo = 'dinhhuugt@gmail.com';
$diachicc = 'xcc@gmail.com';
//test gui Mail
$mail = sendMail($title, $content, $nTo, $mTo,$diachicc='');
if($mail==1)
echo 'mail của bạn đã được gửi đi hãy kiếm tra hộp thư đến để xem kết quả. ';
else echo 'Co loi!';
?>

Đối với hàm sendMailAttachment bạn sửa lại dòng sau.

1
$mail = sendMailAttachment($title, $content, $nTo, $mTo,$diachicc='','filedinhkem.docx',

Tổng kết

 

Ở trên mình & các bạn vừa tìm hiểu về hướng dẫn sử dụng phpmailer như đã nói ở trên, đây chính là một thư viện khá cơ bản  rất là nhiều người biết đến rồi mặc dù vậy mình vẫn mong muốn giới thiệu lại để cho bạn nào chưa biết tới nó  đang gặp khó khăn trong vấn đề gửi email có thể áp dụng được vào dự án của mình. Nếu có thắc mắc gì thì hãy comment phía dưới để khotenmien.vn liên lạc với bạn sớm nhất có thể.

Xem thêm : 2FA Code là gì? Cách kích hoạt 2Fa Code trên một số ứng dụng


Thanh Xuân – Tổng hợp, bổ sung 

Cám ơn bạn đã quan tâm đến sản phẩm tại Khotenmien.vn

Chúng tôi sẽ liên hệ bạn ngay nhé!