ดูข้อมูลและเขียนโค๊ดตามข้อมูลนี้มาครับ 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 อีกหรือเปล่าครับ





ขอบคุณล่วงหน้าครับ
กรกฎ วิริยะ 06 ต.ค. 2553 10:53
Web Server ไม่ต้องลง Mail Server เพิ่มเติมครับ เนื่องจากปกติแล้ว เมื่อลง Server มันจะมีระบบเมล์พื้นฐานติดตั้งมาให้แล้ว (sendmail)



สำหรับ PHPMailer ให้กำหนด $mail->Host ให้ชี้ไปยัง mailserver ที่มีอยู่ครับ อาจกำหนดเป็น ip ก็ได้ รวมถึงค่าต่างๆอาจต้องกำหนดให้ถูกต้องครับเช่น port ที่ใช้





kwan noi 06 ต.ค. 2553 11:43


ข้อมูลเพิ่มเติมนะครับ 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!";

}

?>

กรกฎ วิริยะ 06 ต.ค. 2553 14:09
ต้องกำหนดทั้งหมดให้ถูกต้อง ตาม Server ที่ใช้อยู่ครับ



$mail->Host ลองระบุ IP

$mail->Port กำหนดถูกต้องหรือเปล่า 25 เป็น default



$mail->Username,$mail->Password ถูกต้องหรือเปล่า



$mail->AddAddress ใช้ที่อยู่อีเมล์ที่มีอยู่จริงหรือเปล่า



ถ้ามีอะไรไม่ถูกต้องอาจส่งไม่ออก



อ้อ บน WebServer enabled mail server ไว้หรือเปล่า ให้ลองดูที่ php.ini

kwan noi 06 ต.ค. 2553 15:59


แล้วคุณ gOragod เคยทดสอบการระบบ Exchange 2007 บ้างหรือเปล่าครับเนื่องจากผมก็ไม่แน่ในวิธีเช็ค parameter ต่างๆเหมือนกัน ^^" เพราะผมก็ใช้ code นี้เทสกับ gmail แล้ว สามารถใช้งานได้ปกติแต่จะมีเมลซ้ำไป แต่ก็ไม่ได้ซีเรียสอะไร หาคุณ gOragod เคยทดสอบผ่าน Exchange มาก็ขอคำแนะนำด้วยนะครับ เนื่องจากหาข้อมูลเกี่ยวกับ Exchange ค่อนข้างลำบากครับ


กรกฎ วิริยะ 06 ต.ค. 2553 16:23


ไม่เคยใช้ครับ Exchange 2007 ผมตอบตามการตั้งค่าโดยทั่วไปครับ ซึ่งปกติแล้ว มันจะต่างกันไม่มากครับ...นอกจากผู้ติดตั้ง จะกำหนดเป็นอย่างอื่น



ผมแนะนำให้ลองมองหาไฟล์นามสกุล .ini ครับ เพราะโดยปกติมันจะเก็บค่ากำหนดต่างๆไว้ในนั้น



อ้อ มีอีกเรื่องนึง คือ ไม่แน่ใจว่า Mail Server ยอมให้ส่งในโหมด Relay หรือเปล่านะครับ ถ้าไม่ยอมคงส่งไม่ได้ (ในโหมดนี้ Mail Server จะยอมให้ใช้ Server ในการส่งต่อเมล์จาก Server อื่น ซึ่งผมไม่แนใจว่า Exchange 2007 จะใช้ชื่อนี้หรือเปล่า)


kwan noi 07 ต.ค. 2553 08:35


สงสัยโหมด Relay ก็เลยไปหาข้อมูลเพิ่มเติมจาก google ด้วย key word : "exchange 2007 Relay mail" แล้วเข้าที่ลิ้งนี้http://blogs.techrepublic.com.com/networking/?p=373 ตอนนี้กำลังรอทำการ config เด๋วมาบอกต่อครับ ^^"


kwan noi 07 ต.ค. 2553 10:56
update ครับ



ตอนนี้ส่งได้แล้วครับ แต่งงที่ทำไมระบบยังคงฟ้องว่า  SMTP Error: Could not authenticate

และค่าทีได้จาก $mail->Send() ส่งค่ากลับเป็น  1 อ่ะครับ
kwan noi 07 ต.ค. 2553 16:56


เรียบร้อยแล้วครับ หลังจากทำการ add conector smtp relay เข้าไปตามนี้



ใบเสนอราคาโดย หมายเหตุ #6



สงสัยโหมด Relay ก็เลยไปหาข้อมูลเพิ่มเติมจาก google ด้วย key word : "exchange 2007 Relay mail" แล้วเข้าที่ลิ้งนี้http://blogs.techrepublic.com.com/networking/?p=373 ตอนนี้กำลังรอทำการ config เด๋วมาบอกต่อครับ ^^"







แล้วทำการ add ip ที่จะทำการส่ง e-mail เข้าไปด้วยไม่งั้น Exchange จะไม่ยอมให้เชื่อมต่อครับ

จากนั้นcode ที่ผมใช้แค่นี้ครับไม่ต้อง Authen อะไรเลย แต่ต้องชี้ IP server ให้ถูกตัวนะครับตอนแรกผมไปชี้ IP ของ HubTransport เนื่องจาก telnet แล้วผ่าน ก็เลยนึกว่าถูกตัวที่แท้ต้องใช้ ip ที่เป็น Local IP addresses to receive mail

ที่ conector smtp relay ได้ set ค่าไว้ รวมถึง port ก็ดูจากในรูปครับ


กรกฎ วิริยะ 07 ต.ค. 2553 20:19


ยินดีด้วยครับ



แล้วก็ขอบคุณที่กลับมาให้ข้อมูลเพิ่มเติม ถือเป็นตัวอย่างที่ดีครับ...