我使用PHP的SwiftMailer庫批量發送電子郵件(在CANSPAM和RFC之後)。Sendmail在域MX不存在時掛起
一切正常,直到我運行一個在DNS中沒有對應MX條目的域。那時,我的腳本就掛了 - 我假設這是因爲sendmail沒有返回。這可以持續幾分鐘,或者可以持續幾個小時。
我已確認我的腳本(slash sendmail)掛在的地址是沒有DNS MX條目的地址。其他的一切都很好。
在我嘗試發送消息之前,有沒有一種方法可以檢查DNS MX是否存在於PHP內部?這是否可擴展(即,DNS上的額外查找是否真的讓我放慢了速度,或者它是否正常b/c,然後將MX緩存到本地以供sendmail用於傳遞郵件)?
感謝您的幫助
--- UPDATE --- 我嘗試以下解決方案,這讓我縮小問題是什麼。這似乎不是MX條目是否存在的問題。問題在於DNS查找將永遠返回。有沒有簡單的方法可以設置超時,所以如果DNS不返回< 5秒,我可以繼續嗎?
謝謝!這有助於;現在看來問題不在於它是否存在,而在於返回該值的滯後。更新了上面的問題,關於如何在5秒後使請求超時的任何建議? – 2010-11-10 19:37:34
看到我的其他建議 – stillstanding 2010-11-10 19:48:28
所以不會試圖打開一個套接字連接到電子郵件的域?我的問題是(經常)我發送到onedomain.com(可能有或沒有A記錄),但MX是for two.onedomain.com。所以,當我打開一個套接字時,它仍然不會(準確地)告訴我該電子郵件是否應該發送(它告訴我有一個關於onedomain.com的記錄,我真正想知道的是一個記錄[ MX查找]如果該域名有MX條目)。我是否認爲這兩件事不是一回事? – 2010-11-10 21:48:40