PHPMailer เป็น php class สำหรับใช้ส่งอีเมล์ สามารถส่งอีเมล์ผ่าน SMTP server ได้ ส่งได้ทั้งแบบ html และ text รวมไปถึงสามารถแนบไฟล์ในอีเมล์ที่ต้องการส่งได้ด้วย Feature ของ PHPMailer มีดังนี้
* Supports emails digitally signed with S/MIME encryption!
* Supports emails with multiple TOs, CCs, BCCs and REPLY-TOs
* Works on any platform.
* Supports Text & HTML emails.
* Embedded image support.
* Multipart/alternative emails for mail clients that do not read HTML email.
* Flexible debugging.
* Custom mail headers.
* Redundant SMTP servers.
* Support for 8bit, base64, binary, and quoted-printable encoding.
* Word wrap.
* Multiple fs, string, and binary attachments (those from database, string, etc).
* SMTP authentication.
* Tested on multiple SMTP servers: Sendmail, qmail, Postfix, Gmail, Imail, Exchange, etc.
* Good documentation, many examples included in download.
* It's swift, small, and simple.
PHPMailer สามารถดาวน์โหลดได้ที่ https://github.com/PHPMailer/PHPMailer หลังจากที่ดาวน์โหลดไฟล์มาแล้วให้แตกไฟล์ออกมา จะมีไฟล์ของ PHPMailer ให้เรา include ไฟล์ class.phpmailer.php ไปใน script ที่เราต้องการส่งอีเมล์ สำหรับตัวอย่างการเขียน php script ให้ส่งอีเมล์ผ่าน SMTP server ด้วย PHPMailer มีดังนี้
พอร์ท SMTP 25
<?PHP
require("phpMailer/class.phpmailer.php");
$mail = new PHPMailer();
$body = "ทดสอบการส่งอีเมล์ภาษาไทย UTF-8 ผ่าน SMTP Server ด้วย PHPMailer.";
$mail->CharSet = "utf-8";
$mail->isSMTP(); // Set mailer to use SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true; // Enable smtp authentication
$mail->SMTPSecure = 'false'; // Enable "tls" encryption, "ssl" also accepted
$mail->Host = "mail.yourdomain.com"; // SMTP server "smtp.yourdomain.com" หรือ TLS/SSL : hostname By Nakhonitech : "xxx.nakhonitech.com"
$mail->Port = 25; // พอร์ท SMTP 25 / SSL: 465 or 587 / TLS: 587
$mail->Username = "email@yourdomain.com"; // account SMTP
$mail->Password = "******"; // รหัสผ่าน SMTP
$mail->SetFrom("email@yourdomain.com", "yourname");
$mail->AddReplyTo("email@yourdomain.com", "yourname");
$mail->Subject = "ทดสอบ PHPMailer.";
$mail->MsgHTML($body);
$mail->AddAddress("recipient1@somedomain.com", "recipient1"); // ผู้รับคนที่หนึ่ง
$mail->AddAddress("recipient2@somedomain.com", "recipient2"); // ผู้รับคนที่สอง
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
พอร์ท SMTP SSL: 465 or 587 / TLS: 587
<?PHP
require("phpMailer/class.phpmailer.php");
$mail = new PHPMailer();
$body = "ทดสอบการส่งอีเมล์ภาษาไทย UTF-8 ผ่าน SMTP Server ด้วย PHPMailer.";
$mail->CharSet = "utf-8";
$mail->isSMTP(); // Set mailer to use SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true; // Enable smtp authentication
$mail->SMTPSecure = 'tls'; // Enable "tls" encryption, "ssl" also accepted
$mail->Host = "hostnamexxx.nakhonitech.com"; // SMTP server "smtp.yourdomain.com" หรือ TLS/SSL : hostname ใสชื่อโฮสหรือ ns : "nsx.nakhonitech.com"
$mail->Port = 587; // พอร์ท SMTP 25 / SSL: 465 or 587 / TLS: 587
$mail->Username = "email@yourdomain.com"; // account SMTP
$mail->Password = "******"; // รหัสผ่าน SMTP
$mail->SetFrom("email@yourdomain.com", "yourname");
$mail->AddReplyTo("email@yourdomain.com", "yourname");
$mail->Subject = "ทดสอบ PHPMailer.";
$mail->MsgHTML($body);
$mail->AddAddress("recipient1@somedomain.com", "recipient1"); // ผู้รับคนที่หนึ่ง
$mail->AddAddress("recipient2@somedomain.com", "recipient2"); // ผู้รับคนที่สอง
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
สำหรับข้อมูลและเอกสารต่างๆเกี่ยวกับ PHPMailer สามารถอ่านได้ใน document ของ PHPMailer ครับ https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Download : https://drive.google.com/drive/folders/12662Q6crAzEtSSwlCTROOxPrPXHqBe6p?usp=sharing
หมายเหตุ การส่งอีเมล์โดยผ่าน SMTP server เป็นเพียงแค่การป้องกันอีเมล์ที่เราส่งไปนั้นลง junk หรือ spam box อีกวิธีหนึ่งเท่านั้น ยังมีปัจจัยอื่นอีกหลายๆอย่างที่ทำให้อีเมล์ของเราที่ส่งไปถูกจับให้ลง junk หรือ spam box ครับ