คำถามที่พบบ่อย

รวบรวมคำถาม และ คำตอบ การใช้งาน โฮสติ้ง โดเมน และการสั่งซื้อ และข้อกำหนดต่างๆ ถูกรวบรวมไว้ที่นี้แล้ว

สร้าง 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 = "[email protected]"; // email SMTP
$mail->Password = "thaisurehost"; // password SMTP

$mail->SetFrom("[email protected]", "THAISUREHOST");//email from
$mail->Subject = "ทดสอบ phpmailer";

$body = "ทดสอบการส่ง email ผ่าน phpmailer";
$mail->MsgHTML($body);

$mail->AddAddress('[email protected]', 'BOBBY'); // เพิ่มคนรับได้ไม่จำกัด Email,Name

//$mail->AddAddress("[email protected]", "recipient2");
//$mail->AddStringAttachment('realpath', "YourPhoto.jpg");//แนบไฟล์ได้ทันที โดยกำหนด realpath เต็มจากระบบ

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
$mail->ClearAddresses();

ดู FAQ ทั้งหมดได้ที่นี้...