แสดงบทความที่มีป้ายกำกับ smtp คือ อะไร แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ smtp คือ อะไร แสดงบทความทั้งหมด

วันพุธที่ 23 กันยายน พ.ศ. 2558

จะเขียน PHP ให้ส่ง Email ออกผ่าน Mail Server ของเราได้อย่างไร ?



ตัวอย่างการส่งที่ถูกต้อง

//ให้เลือก path ที่เก็บ function PHPMailer ให้ถูกต้อง
require_once "vendor/autoload.php";


$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';

//SMTP Setting
$mail->Host = "mail.yourdomain.coom";
$mail->Port = 587;
$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;
$mail->SMTPAuth = true;
$mail->Username = "youremail@yourdomain.com";
$mail->Password = "password";

//Body Setting
$mail->setFrom('youremail@yourdomain.com', 'First Last');
$mail->addAddress('toemail@todomain.com', 'John Doe');
$body = "Test body message" ;
$mail->Subject = 'Subject';

$mail->msgHTML($body);
$mail->send();

ในบรรทัดที่เป็น font สีแดง ถ้าเราไม่ใส่ค่าดังกล่าวจะไม่สามารถส่งออกได้

ซึ่งค่าในตัวแปรแต่ละตัว เหมือนกับค่าในส่วน Outgoing ในโปรแกรม Outlook นั่นเอง โดยการส่งวิธีนี้จะทำให้ Mail Server ปลายทางได้รับอีเมล์ของคุณ


การแก้ไขปัญหา

  • หากลองทำตามแล้วไม่สามารถส่ง email ออกได้ให้ลอง เปลี่ยนบรรทัด $mail->SMTPDebug = 0; จากค่า 0 เป็น 1 คือ $mail->SMTPDebug = 1; เพื่อให้ระบบแสดงค่า Error ออกมา และนำค่า Error นั้นแจ้งกับทีมเราเพื่อใช้วิเคราะห์ต่อไป
  • อาจจะลองเปลี่ยนค่า $mail->Host = "mail.yourdomain.coom";  จาก mail.yourdomain.coom เป็นค่าหมายเลข IP ของ Mail Server เช่น three.technologyland.co.th หรือ 139.162.26.199
  • หากดำเนินการทั้งหมดแล้วยังไม่ได้ อาจจะเกิดจาก Web Hosting ที่คุณใช้งานอยู่อาจจะเชื่อมต่อหรือมีการ Block IP ของ Mail Server เอาไว้ เราเคยพบเคส Web Hosting บางที่จะ Block IP ต่างประเทศบาง IP ซึ่ง Mail Server ของเราตั้งในต่างประเทศเช่นกัน  หรือหากเป็น VPS ให้ลองทำการ ping จาก VPS ของท่านมายัง mail.yourdomain.coom ว่า ping แล้วได้ค่าอย่างไร

การทดสอบว่า Web Hosting ของท่าน Block Mail Server เราหรือไม่

<?php
function pingAddress($ip) {
$pingresult = exec("/bin/ping -n 3 $ip", $outcome, $status);
if (0 == $status) {
$status = "alive";
} else {
$status = "dead";
}
echo "The IP address, $ip, is ".$status;
}

pingAddress("139.162.26.103");

?>

หากขึ้นว่า dead แสดงว่า Web Hosting ท่าน Block IP ของ Mail Server
ซึ่งเราพบว่า Web Hosting บางที่ Block IP ต่างประเทศ ซึ่ง Mail Server
เราอยู่สิงคโปร์ซึ่งอาจจะโดน block ไปด้วย

บทความที่เกี่ยวข้อง


บทความโดย

MailDee.com ผู้ให้บริการ Mail Server อันดับ 1