สร้าง form php แบบส่งเข้าแน่นอน
ปัญหาของการทำ form ส่งเมลล์คือ mail server ปลายทางมักจะจด mail เราเป็น spam ไม่ก็ ไม่ยอมรับเลย
เพราะ function ที่ส่งนั้นเราใช้ mail() พื้นฐาน ของ php บางคนมีความรู้หน่อยก็เขียน mail() ให้ส่ง header ดีๆ ก็พอจะรอดได้บ้าง แต่สำหรับคนทีไม่ค่อยคล่องเรื่อง smtp protocol ก็ลำบาก
วันนี้ขอแนะนำ class php ตัวนึงชื่อว่า PHPMailer
หลักการของมันคือ ติดต่อกับ SMTP Server จริงๆ ด้วย User & Password ทำให้การส่งนั้นมีการยืนยันตัวที่แน่นอน เวลาปลายทาง mail ก็จะเข้า INBOX ไม่หลงไปอยู่ใน SPAM (ถ้าไม่ได้ spam ด้วย class นี้อีกนะครับ)
เรามาดูวิธีการกันดีกว่าครับว่าทำอย่างไร ก่อนอื่นก็ต้องไปโหลดตัว class PHPMailer มาก่อนนะครับ
require("../class.phpmailer.php");//เรียกใช้ class อยู่ตรงไหนก็กำหนด path กันให้เรียบร้อยครับ
$mail = new PHPMailer();
$mail->CharSet = "utf-8";
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = "thaisurehost.com";//server SMTP
$mail->SMTPAuth = true;// enable SMTP authentication
$mail->SMTPKeepAlive = true;// SMTP connection will not close after each email sent
$mail->Port = 25;
$mail->Username = "info@thaisurehost.com"; // email SMTP
$mail->Password = "thaisurehost"; // password SMTP
$mail->SetFrom("info@thaisurehost.com", "THAISUREHOST");//email from
$mail->Subject = "ทดสอบ phpmailer";
$body = "ทดสอบการส่ง email ผ่าน phpmailer";
$mail->MsgHTML($body);
$mail->AddAddress('bob_zire71@yahoo.com', 'BOBBY'); // เพิ่มคนรับได้ไม่จำกัด Email,Name
//$mail->AddAddress("recipient2@somedomain.com", "recipient2");
//$mail->AddStringAttachment('realpath', "YourPhoto.jpg");//แนบไฟล์ได้ทันที โดยกำหนด realpath เต็มจากระบบ
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
$mail->ClearAddresses();
เพราะ function ที่ส่งนั้นเราใช้ mail() พื้นฐาน ของ php บางคนมีความรู้หน่อยก็เขียน mail() ให้ส่ง header ดีๆ ก็พอจะรอดได้บ้าง แต่สำหรับคนทีไม่ค่อยคล่องเรื่อง smtp protocol ก็ลำบาก
วันนี้ขอแนะนำ class php ตัวนึงชื่อว่า PHPMailer
หลักการของมันคือ ติดต่อกับ SMTP Server จริงๆ ด้วย User & Password ทำให้การส่งนั้นมีการยืนยันตัวที่แน่นอน เวลาปลายทาง mail ก็จะเข้า INBOX ไม่หลงไปอยู่ใน SPAM (ถ้าไม่ได้ spam ด้วย class นี้อีกนะครับ)
เรามาดูวิธีการกันดีกว่าครับว่าทำอย่างไร ก่อนอื่นก็ต้องไปโหลดตัว class PHPMailer มาก่อนนะครับ
require("../class.phpmailer.php");//เรียกใช้ class อยู่ตรงไหนก็กำหนด path กันให้เรียบร้อยครับ
$mail = new PHPMailer();
$mail->CharSet = "utf-8";
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = "thaisurehost.com";//server SMTP
$mail->SMTPAuth = true;// enable SMTP authentication
$mail->SMTPKeepAlive = true;// SMTP connection will not close after each email sent
$mail->Port = 25;
$mail->Username = "info@thaisurehost.com"; // email SMTP
$mail->Password = "thaisurehost"; // password SMTP
$mail->SetFrom("info@thaisurehost.com", "THAISUREHOST");//email from
$mail->Subject = "ทดสอบ phpmailer";
$body = "ทดสอบการส่ง email ผ่าน phpmailer";
$mail->MsgHTML($body);
$mail->AddAddress('bob_zire71@yahoo.com', 'BOBBY'); // เพิ่มคนรับได้ไม่จำกัด Email,Name
//$mail->AddAddress("recipient2@somedomain.com", "recipient2");
//$mail->AddStringAttachment('realpath', "YourPhoto.jpg");//แนบไฟล์ได้ทันที โดยกำหนด realpath เต็มจากระบบ
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
$mail->ClearAddresses();
ดู FAQ ทั้งหมดได้ที่นี้...