2012-04-20 33 views
1

我正在發送一些使用帶有發件人地址的PHP郵件()的新郵件。PHP檢測並存儲返回的電子郵件

由於某些原因,我將不得不檢查,這些newlsetters中的許多被反彈,並返回一個「失敗通知」到我的發件人地址。

目前,這些電子郵件只是簡單地返回到我們閱讀發件人電子郵件的電子郵件客戶端。

我希望我能爲我的營銷人員存儲和管理所有這些「失敗」的電子郵件地址。 當然,從電子郵件客戶端複製/粘貼每個電子郵件地址是非常困難的(它們是數百個)。

有沒有辦法檢測並通過PHP捕獲這些地址存儲在Mysql表中?

在此先感謝。

+0

取決於您作爲郵件服務器使用的內容,請添加詳細信息。總是有選項,比如PHP有IMAP代碼來打開和閱讀IMAP郵箱 - 你可以寫些東西來做到這一點,並將電子郵件放入MySQL數據庫。 – James 2012-04-20 08:42:22

回答

0

您不能從mail()命令中獲取有關失敗消息的信息,因爲這隻能將消息發送到本地郵件服務器進行處理。

您將需要實現一個cronjob或以其他方式定期調用的腳本來檢查郵箱。因此,您需要使用PHP中的IMAP and POP functions來獲取消息並處理失敗的消息。

或者您需要檢查郵件服務器的手冊以檢查服務器遇到故障時是否可以包含一些代碼。因此,郵件服務器本身會在數據庫中標記失敗的消息,或者至少調用一個提供失敗消息的腳本。

0

對此的習慣解決方案是VERP http://cr.yp.to/proto/verp.txt - 基本上,爲每個消息使用唯一的信封發件人;發送回該特定地址的任何內容都是來自您嘗試發送到的地址的反彈。

例如,如果你的列表稱爲[email protected],你發短信12345到[email protected]然後該消息的信封發件人會像[email protected]和您的MTA應配置路由任何電子郵件到這個地址到正確的地方(從您的數據庫中刪除失敗地址的腳本,或其他)。

當然,如果你使用一個正確的郵件列表管理器(你應該!),它將已經包含邏輯來處理所有這些;它應該是一個簡單的配置問題。