如何管理PHP中的电子邮件弹跳和错误?

时间:2012-02-04 00:38:41

标签: php email-client

如果您正在构建网络群发邮件软件,那么管理电子邮件退回/错误的最佳方法是什么?我计划使用PHP。

在有人开始尖叫之前,是的,这些列表将来自有选择加入的有效客户。

我知道桌面软件或第三方网站可以管理这些内容。我希望用类似于当前CMS视觉的设计来显示它,并且可以在那里访问。

如果唯一的解决方案是连接到邮件服务器并阅读弹回消息,那么我将采用这种方式。那么,您将如何解析数据以将该电子邮件标记为“无效”?

谢谢

1 个答案:

答案 0 :(得分:1)

除了让一个PHP脚本从pop / imap服务器读取邮件之外,你可以做的一件事就是将某个地址的传入邮件管道传输到php脚本。 See Google

然后,您可以通过执行类似$email = file_get_contents('php://stdin');的操作来阅读邮件的全部内容。我已安装了php扩展mailparse以帮助解析RFC电子邮件,但还有其他选项可用。您甚至不必使用任何东西来解析消息。

收到消息后,您可以使用许多指示符来尝试将消息标记为bounch。首先,请参阅维基百科有关Non Delivery Reports的文章,特别是FormatRFC 6522 - The Multipart/Report Media Type for the Reporting of Mail System Administrative Messages。您还可以检查邮件中的常见标题,例如X-Failed-RecipientsDiagnostic-Code

在PHP邮件处理器中确定消息为退回后,您可以采取适当的操作并在数据库中设置与该电子邮件相关的标记。请注意,一些错误可能并不意味着地址不好。例如,如果邮件服务器停机几天,您的MTA可能会放弃,但这并不意味着地址不好。用户的邮箱也可能已满。

记录退回邮件的副本并不是一个坏主意,以便在必要时可以由某人检查以诊断问题或撤消标记或特定电子邮件地址。

以下是一些其他参考资料:

http://forums.theplanet.com/lofiversion/index.php/t89873.html(注意改进可能性2)
https://stackoverflow.com/questions/5700034/how-do-i-process-a-bounce-email-to-find-the-error-code
Bounce Email handling with PHP?

希望有所帮助。