【问题标题】:How to manage emails bouncing and errors in PHP?如何在 PHP 中管理电子邮件弹跳和错误?
【发布时间】:2012-02-26 14:03:15
【问题描述】:

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

在有人开始尖叫之前,是的,名单将来自已选择加入的有效客户。

我知道有桌面软件或第三方网站可以管理这些事情。我想用与当前 CMS 的视觉效果类似的设计来展示它,并且可以在其中访问。

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

谢谢

【问题讨论】:

  • best way to manage 是什么意思?管理什么?
  • @Paul,退回邮件?由于目的地不存在或无法到达而退回到服务器的电子邮件
  • 即使不在办公室也可能被视为反弹,但这些将被忽略。
  • 是的,我明白了。 “管理”是什么意思?您想在列表中显示退回的电子邮件吗?你想删除它们吗?你的问题很模棱两可。
  • @Paul:“管理”可能意味着这两件事。如果您不知道答案,请不要担心。

标签: php email-client


【解决方案1】:

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

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

收到消息后,您可以使用许多指标来尝试将消息标记为退回邮件。首先,请参阅有关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?

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 2015-03-23
    • 1970-01-01
    • 2012-02-05
    • 2023-03-12
    • 2019-02-21
    • 2012-04-02
    • 2017-04-05
    • 2023-03-08
    相关资源
    最近更新 更多