การใช้งาน PHPMailer ส่งอีเมลล์ผ่าน SMTP server

    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 ครับ

  • PHPMailer
  • 2 Users Found This Useful
Was this answer helpful?