สอบถามข้อมูลการส่งเมลผ่าน php ด้วย Exchange 2007 MailServer ครับ
ดูข้อมูลและเขียนโค๊ดตามข้อมูลนี้มาครับ http://www.goragod.com/forum-view.html?wbid=1739
เนื่องจากเจอปัญหาเดียวกับผู้ตั้งกระทู้คือ SMTP Error: Could not connect to SMTP host.
อยากสอบถามเพิ่มเติมคือ ผมใช้ MailServer เป็น Exchange 2007 ซึ่งตั้งขึ้นมาใช้งานปกติ ส่วน Web Server นั้น เป็นอีกเครื่องนึง แล้วที่ Web Server ต้องลง Software Mailserver อีกหรือเปล่าครับ
ขอบคุณล่วงหน้าครับ
เนื่องจากเจอปัญหาเดียวกับผู้ตั้งกระทู้คือ SMTP Error: Could not connect to SMTP host.
อยากสอบถามเพิ่มเติมคือ ผมใช้ MailServer เป็น Exchange 2007 ซึ่งตั้งขึ้นมาใช้งานปกติ ส่วน Web Server นั้น เป็นอีกเครื่องนึง แล้วที่ Web Server ต้องลง Software Mailserver อีกหรือเปล่าครับ
ขอบคุณล่วงหน้าครับ
สำหรับ PHPMailer ให้กำหนด $mail->Host ให้ชี้ไปยัง mailserver ที่มีอยู่ครับ อาจกำหนดเป็น ip ก็ได้ รวมถึงค่าต่างๆอาจต้องกำหนดให้ถูกต้องครับเช่น port ที่ใช้
ข้อมูลเพิ่มเติมนะครับ Webserver จริงๆเป็น XP แล้วลง Apache/2.2.8 (Win32) PHP/5.2.6 ครับ
ส่วน code ของผมนะครับเป็นแบบนี้ ไม่แน่ใจว่าองแก้ส่วนไหนเพิ่มเติมหรือเปล่าครับ
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$body = "ทดสอบการส่งอีเมล์ภาษาไทย UTF-8 ผ่าน SMTP Server ด้วย PHPMailer.";
$mail->CharSet = "utf-8";
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Port = 25; // พอร์ท
$mail->Host = "IP Exchange"; // SMTP server
$mail->Username = "User@domain.com"; // account SMTP
$mail->Password = "Password"; // รหัสผ่าน SMTP
$mail->SetFrom("account-email@domain.com", "Name E-Mail");
$mail->Subject = "ทดสอบ PHPMailer.";
$mail->MsgHTML($body);
$mail->AddAddress("account-email@domain.com", "Name E-Mail"); // ผู้รับคนที่หนึ่ง
if(!$mail->Send()) {
echo $mail->Send();
} else {
echo "Message sent!";
}
?>
$mail->Host ลองระบุ IP
$mail->Port กำหนดถูกต้องหรือเปล่า 25 เป็น default
$mail->Username,$mail->Password ถูกต้องหรือเปล่า
$mail->AddAddress ใช้ที่อยู่อีเมล์ที่มีอยู่จริงหรือเปล่า
ถ้ามีอะไรไม่ถูกต้องอาจส่งไม่ออก
อ้อ บน WebServer enabled mail server ไว้หรือเปล่า ให้ลองดูที่ php.ini
แล้วคุณ gOragod เคยทดสอบการระบบ Exchange 2007 บ้างหรือเปล่าครับเนื่องจากผมก็ไม่แน่ในวิธีเช็ค parameter ต่างๆเหมือนกัน ^^" เพราะผมก็ใช้ code นี้เทสกับ gmail แล้ว สามารถใช้งานได้ปกติแต่จะมีเมลซ้ำไป แต่ก็ไม่ได้ซีเรียสอะไร หาคุณ gOragod เคยทดสอบผ่าน Exchange มาก็ขอคำแนะนำด้วยนะครับ เนื่องจากหาข้อมูลเกี่ยวกับ Exchange ค่อนข้างลำบากครับ
ไม่เคยใช้ครับ Exchange 2007 ผมตอบตามการตั้งค่าโดยทั่วไปครับ ซึ่งปกติแล้ว มันจะต่างกันไม่มากครับ...นอกจากผู้ติดตั้ง จะกำหนดเป็นอย่างอื่น
ผมแนะนำให้ลองมองหาไฟล์นามสกุล .ini ครับ เพราะโดยปกติมันจะเก็บค่ากำหนดต่างๆไว้ในนั้น
อ้อ มีอีกเรื่องนึง คือ ไม่แน่ใจว่า Mail Server ยอมให้ส่งในโหมด Relay หรือเปล่านะครับ ถ้าไม่ยอมคงส่งไม่ได้ (ในโหมดนี้ Mail Server จะยอมให้ใช้ Server ในการส่งต่อเมล์จาก Server อื่น ซึ่งผมไม่แนใจว่า Exchange 2007 จะใช้ชื่อนี้หรือเปล่า)
สงสัยโหมด Relay ก็เลยไปหาข้อมูลเพิ่มเติมจาก google ด้วย key word : "exchange 2007 Relay mail" แล้วเข้าที่ลิ้งนี้http://blogs.techrepublic.com.com/networking/?p=373 ตอนนี้กำลังรอทำการ config เด๋วมาบอกต่อครับ ^^"
ตอนนี้ส่งได้แล้วครับ แต่งงที่ทำไมระบบยังคงฟ้องว่า SMTP Error: Could not authenticate
และค่าทีได้จาก $mail->Send() ส่งค่ากลับเป็น 1 อ่ะครับ
เรียบร้อยแล้วครับ หลังจากทำการ add conector smtp relay เข้าไปตามนี้
แล้วทำการ add ip ที่จะทำการส่ง e-mail เข้าไปด้วยไม่งั้น Exchange จะไม่ยอมให้เชื่อมต่อครับ
จากนั้นcode ที่ผมใช้แค่นี้ครับไม่ต้อง Authen อะไรเลย แต่ต้องชี้ IP server ให้ถูกตัวนะครับตอนแรกผมไปชี้ IP ของ HubTransport เนื่องจาก telnet แล้วผ่าน ก็เลยนึกว่าถูกตัวที่แท้ต้องใช้ ip ที่เป็น Local IP addresses to receive mail
ที่ conector smtp relay ได้ set ค่าไว้ รวมถึง port ก็ดูจากในรูปครับ
ยินดีด้วยครับ
แล้วก็ขอบคุณที่กลับมาให้ข้อมูลเพิ่มเติม ถือเป็นตัวอย่างที่ดีครับ...