A-AA+then

สอบถามข้อมูลการส่งเมลผ่าน php ด้วย Exchange 2007 MailServer ครับ

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


ขอบคุณล่วงหน้าครับ

9 ความคิดเห็น

Web Server ไม่ต้องลง Mail Server เพิ่มเติมครับ เนื่องจากปกติแล้ว เมื่อลง Server มันจะมีระบบเมล์พื้นฐานติดตั้งมาให้แล้ว (sendmail)

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


1

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

ต้องกำหนดทั้งหมดให้ถูกต้อง ตาม Server ที่ใช้อยู่ครับ

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

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

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

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

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

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

4

    ไม่เคยใช้ครับ Exchange 2007 ผมตอบตามการตั้งค่าโดยทั่วไปครับ ซึ่งปกติแล้ว มันจะต่างกันไม่มากครับ...นอกจากผู้ติดตั้ง จะกำหนดเป็นอย่างอื่น
    
    ผมแนะนำให้ลองมองหาไฟล์นามสกุล .ini ครับ เพราะโดยปกติมันจะเก็บค่ากำหนดต่างๆไว้ในนั้น
    
    อ้อ มีอีกเรื่องนึง คือ ไม่แน่ใจว่า Mail Server ยอมให้ส่งในโหมด Relay หรือเปล่านะครับ ถ้าไม่ยอมคงส่งไม่ได้ (ในโหมดนี้ Mail Server จะยอมให้ใช้ Server ในการส่งต่อเมล์จาก Server อื่น ซึ่งผมไม่แนใจว่า Exchange 2007 จะใช้ชื่อนี้หรือเปล่า)

5

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

6

update ครับ

ตอนนี้ส่งได้แล้วครับ แต่งงที่ทำไมระบบยังคงฟ้องว่า  SMTP Error: Could not authenticate
และค่าทีได้จาก $mail->Send() ส่งค่ากลับเป็น  1 อ่ะครับ
7

    เรียบร้อยแล้วครับ หลังจากทำการ 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 ก็ดูจากในรูปครับ

8

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

9
^