สรุปแนวทางในการเขียนโปรแกรม เพื่อส่งเมล การส่งเมล ออกจากโปแกรมเป็นเรื่องจำเป็นและมีการใช้งานกันมา สำหรับ Web application ระบบที่มีการส่งเมล ออกจากโปรแกรม เช่น ระบบสมัครสมาชิก ,ระบบแจ้งเมื่อลืมรหัสผ่าน, โปรแกรม ส่งข่าวสารให้สมาชิก หรือ การแจ้งเตือนต่างๆ เป็นสิ่งจำเป็นที่ต้องใช้เมลเซิฟเวอร์ แต่ปัญหาของ Programmer คือในขั้นตอนการพัฒนา เป็นเรื่องลำบากที่จะ test ส่งเมลเราต้องติดตั้ง Mail Server ก่อน หรือ อาจใช้ SMTP ของ ข้างนอก เช่น SMTP ของเว็บเอง หรือ SMTP ของ Gmail แต่นั่นไม่ใช่ทางแก้ปัญหา เพราะเราไม่ควรเอาเมลที่มีการใช้งานจริงๆ มา Test โปรแกรมที่เราสร้างขึ้นมา
มาดูทางออกกัน ถ้าเราจำลองเครื่องด้วย XAMPP จะมี Mail Server มาให้ แล้วคือ Mercury Mail Server ดูวิธีตั้งค่าได้ตามลิงค์ ทำให้เราเพิ่ม ทางเลือกในการทดสอบการส่งเมลได้


วิธีการทดสอบโปรแกรมส่งเมล (ไม่ต้องส่งเมลจริงออกข้างนอกให้วุ่นวายใจ แม้ไม่เชื่อมต่อเน็ตก็สามารถทดสอบ ส่งเมลได้)
1. ใช้ mailtodisk ของ XAMPP  โดยปกติ XAMPP เวอร์ชั่น 1.7 เป็นต้นมาจะมี sendmail_path
sendmail_path = "D:\xampp\mailtodisk\mailtodisk.exe"ตรงนี้จะเป็นตัวช่วยให้เราทดสอบการส่งเมลจาก php โดยใช้ฟังก์ชั่นเมล ได้
เช่นทดสอบเขียน php ส่งเมลแบบง่ายๆ

<?php
$from_name = "Mindphp.com";
$from_email = "[email protected]";
$headers = "From: $from_name <$from_email>";
$body = "Hi, \nThis is a test mail from $from_name <$from_email>.";
$subject = "Test mail from Mindphp.com";
$to = "[email protected]";
 
if (mail($to, $subject, $body, $headers)) {
  echo "success!";
} else {
  echo "fail...";
}
?>

เนื้อหาเมลที่เราส่งออกจากไปอยู่ที่
D:\xampp\mailoutput\
2. ใช้ SMTP ของ Localhost (ไม่ใช่ SMTP ของ Gmail นะครับ )
ทำไมลองใช้ smtp ของ Localhost ก็เพราะเพราะไม่ต้องการให้เมลที่เราทดสอบไปเป็นขยะในเมลที่ใช้งานจริง และเราจะทดสอบ ส่งออกมากแค่ไหนก็ไม่ต้องกลัวโดนแบนจากผู้ให้บริการ
การเขียน php เพื่อส่งเมลด้วย SMTP เราสามาถใช้ swiftmailer หรือ phpMailer
ตัวอย่าง การใช้ phpMailer กับ SMTP ของ Localhost ดูตัวอย่างการ ตั้งค่า และ Config Mail Server เพื่อทดลองส่ง ได้ที่ การตั้งค่า Mercury Mail Server เพื่อทดสอบการส่งเมล ด้วย SMTP ใน Localhost

require_once('class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsHTML(true); // กำหนดให้ ส่งเป็น html
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
// $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
// $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 25; // port ที่เราติดตั้ง Mail Server ไว้ด
$mail->Host = '127.0.0.1'; // IP ของ Localhost
$mail->Username = " [email protected]"; // ชื่อ E-mail ที่เราสร้างไว้
$mail->Password = "xxxxx"; // รหัสผ่าน
$mail->From = "เมลผู้ส่ง"; // เช่น [email protected]
$mail->FromName = "ชื่อผู้ส่ง";
$mail->Subject = "หัวข้ออีกเมล";
$mail->Body = "ข้อความที่จะส่ง เป็น html ก็ได้";
$mail->AddAddress("e-mail ผู้รับ", "ชื่อผู้รับ"); // ใส่ email ผู้รับอย่างเดียวก็ได้
$mail->Send(); // ส่งเมลออก 


เท่านี้เราก็ลองใช้ Outlook หรือ ThunderBird

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สอบถามการกำหนดสกุลไฟล์เวลาอัพโหลดภาพ
โดย flook พฤ 09 พ.ย. 2023 10:26 am บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
713
พฤ 09 พ.ย. 2023 10:45 am โดย eange08 View Topic สอบถามการกำหนดสกุลไฟล์เวลาอัพโหลดภาพ
สอบถาม cron จะเรียกใช้ไฟล์ที่อยู่ใน controller อย่างไร
โดย eange08 พ 08 พ.ย. 2023 5:19 pm บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
679
จ 13 พ.ย. 2023 2:35 pm โดย eange08 View Topic สอบถาม cron จะเรียกใช้ไฟล์ที่อยู่ใน controller อย่างไร
ระบบจัดเก็บพลังงานจากแบตเตอรี่ลิเธียมไอออนคืออะไร?
โดย GreatBattery พ 08 พ.ย. 2023 3:46 pm บอร์ด Share Knowledge
0
463
พ 08 พ.ย. 2023 3:46 pm โดย GreatBattery View Topic ระบบจัดเก็บพลังงานจากแบตเตอรี่ลิเธียมไอออนคืออะไร?
สอบถามรัน cron ด้วย url ใน extension เป็นลิงค์แบบไหนค่ะ [phpBB]
โดย eange08 จ 06 พ.ย. 2023 6:11 pm บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
818
จ 13 พ.ย. 2023 12:53 pm โดย eange08 View Topic สอบถามรัน cron ด้วย url ใน extension เป็นลิงค์แบบไหนค่ะ [phpBB]
ใช้โมดูลแล้วขึ้น JUri not found
โดย Thanapoom1514 จ 06 พ.ย. 2023 3:52 pm บอร์ด Joomla Development
0
1683
จ 06 พ.ย. 2023 3:52 pm โดย Thanapoom1514 View Topic ใช้โมดูลแล้วขึ้น JUri not found
How to Add Animation and Transitions to React Components?
โดย Codalien จ 06 พ.ย. 2023 2:33 pm บอร์ด JavaScript & jQuery Ajax & Node.JS
0
6236
จ 06 พ.ย. 2023 2:33 pm โดย Codalien View Topic How to Add Animation and Transitions to React Components?
สอบถามเว็บแจ้ง error JApplicationSite::isClient()
โดย Thanapoom1514 จ 06 พ.ย. 2023 1:58 pm บอร์ด Joomla Development
2
681
พ 08 พ.ย. 2023 2:44 pm โดย mindphp View Topic สอบถามเว็บแจ้ง error JApplicationSite::isClient()
วิเคราะห์สาเหตุที่รถแบตเตอรี่มีไฟฟ้าแต่สตาร์ทไม่ติด
โดย GreatBattery จ 06 พ.ย. 2023 1:21 pm บอร์ด Share Knowledge
0
479
จ 06 พ.ย. 2023 1:21 pm โดย GreatBattery View Topic วิเคราะห์สาเหตุที่รถแบตเตอรี่มีไฟฟ้าแต่สตาร์ทไม่ติด