iT邦幫忙

0

PHP如何查詢Mail送不出去的問題

chan15 2010-03-24 11:25:0021833 瀏覽
  • 分享至 

  • xImage

假設用mail function無法把Email順利寄出,有什麼方法可以查出原因嗎?

不明
【**此則訊息已被站方移除**】
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
pail
iT邦新手 4 級 ‧ 2010-03-25 17:58:18
最佳解答

分成兩個層面來看....
(1) 你說使用 php 的 mail() function,
那麼, 應該要確認 mail() 的回傳值是 true or false.
Return Values
Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.

(2) 客戶 的 Server 端

  • 請客戶提供 php.ini
    注意 [mail function] 的那塊.
    有 2 參數, SMTP 與 smtp_port
    有了這兩個參數, 那...你可以試著 telnet smtp_server smtp_port
    看看有沒有連通.....
    有通了, 再下下 smtp 的 command...
    最基本的...
    helo localhost
    mail from: <abc@xxx.xxx.xx>
    rcpt to: <haha@xxx.xxx.xxx>
    data
    Subject: TEST

alksjfljsalfjas;f
.
看看在過程中有沒有奇怪的訊息, 如 Relay denied....

  • 請客戶提供 在做發信操作後的 /var/log/maillog
    從 maillog 中, 可以真正的看到 有沒有把信轉出去.....
11
jihchi
iT邦新手 5 級 ‧ 2010-03-24 11:57:01

php 的本身不會發信出去

在 linux 環境下, 是靠 sendmail 來將信送出

在 win 環境下, 必須設定 php.ini 裡頭的 [mail function] 區塊, 有個 SMTP 可以設定

chan15 iT邦新手 2 級 ‧ 2010-03-24 12:18:15 檢舉

是這樣的,客戶的Server是自己的,我們單純管coding面
我用最陽春的mail function寄一封很陽春的mail內容試發
但信寄不出來,跟對方MIS說回應的就是一個一問三不知,所以才想說有沒有辦法從程式面找出問題所在。

如果您的程式是往該 server 發信的話,
至少該 server 的 mail log
一定會記錄什麼時間、什麼IP來連結的動作,
拒絕原因是什麼。

如果該 mail server 有 greylist 的話,
就要把發信程式所在的 IP 設為白名單。

發信程式也許要考慮把mail server的回應情形,
看是OK或Denied給秀出來。

8
michaelwan
iT邦高手 1 級 ‧ 2010-03-24 13:27:19

使用那台php主機進入命令模式, 直接telnet SMTP 主機.
用SMTP CMD來溝通看看, 測試看看可否正常發信.

常用的SMTP CMD:
helo, mail from:, rcpt to:, data

6
隨風奶爸
iT邦好手 1 級 ‧ 2010-03-25 09:54:17

給你一篇網路上的文章參考!
http://www.dk101.com/index.php/viewnews-837.html

6
fillano
iT邦超人 1 級 ‧ 2010-03-25 10:52:57

還可以用php mailer來寄信,他可以不依賴系統的mta直接送到收件方的伺服器,失敗也有比較多的錯誤訊息。(但是如果信多的話就要考慮一下,用系統的mta來寄信可以分散php的負載)

參考:
http://phpmailer.worxware.com/index.php

http://sourceforge.net/projects/phpmailer/

6
dragonken
iT邦新手 3 級 ‧ 2010-03-25 11:54:32

如果port被關了,當然怎麼寄也寄不出來~

fillano iT邦超人 1 級 ‧ 2010-03-25 13:33:12 檢舉

是說被防火牆擋住嗎?

dragonken iT邦新手 3 級 ‧ 2010-04-26 10:23:05 檢舉

沒錯~~大部份都是它的原因~

我要發表回答

立即登入回答