检测退回的邮件

时间:2011-09-12 20:54:19

标签: php email

我正在开发一个发送批量邮件(而不是垃圾邮件)的工具,我需要添加一个可以检测退回邮件的功能。是否存在与跳出相关的标准响应?它会在身体的标题中吗?

3 个答案:

答案 0 :(得分:3)

这通常通过将传出邮件的Return-Path标头设置为每个收件人的唯一地址来实现。例如,如果您有唯一的用户ID标识每个收件人,则可以使用bounce+userid@example.com

如果邮件被弹跳,你收到它并解析收件人(将bounce+userid@example.com),然后你可以采取适当的行动。

使用+语法可以创建一个邮件用户(bounces@example.com)来接收所有跳出并仍然区分收件人。

答案 1 :(得分:2)

您不能依赖退回邮件的标题或正文来能够可靠地识别原始收件人,尤其是如果您想要自动执行该过程。即使您添加自己的自定义标头,弹出服务器也可能会在向您发送通知时将其删除。并且尝试解析邮件正文中的文本以便提取收件人的电子邮件地址充其量是狡猾的,因为没有标准格式,并且您获得的每次反弹都会有所不同。唯一一条在反弹中完全不受影响的信息是返回路径电子邮件地址 - 您的服务器宣传它要发送的跳出地址。因此,自动执行真正准确的反弹捕获的唯一方法是将接收者直接编码到返回路径地址本身。

这通常是通过覆盖每个外发邮件的服务器默认返回路径地址来完成的,使用每个收件人的唯一值,例如bounce-XXXXX@yourdomain.com,其中XXXXX是收件人的一些编码和/或模糊表示。电子邮件地址或其他内部标识符。此技术需要使用可以支持此类外卡全能地址的电子邮件服务器,这样您就不必为要发送到的每个电子邮件地址设置新的退回帐户。假设您只是将服务器配置为将所有此类反弹*电子邮件转储到您的脚本,这只需解码XXXXX以确定原始收件人是谁。

答案 2 :(得分:1)

如果您的工具将直接与收件人的SMTP服务器通信,那么它就是 可能更适合检查通过SMTP protocol返回的错误代码 4xx(临时故障,例如“邮箱已满”)或5xx(错误,例如“没有此类用户”) 响应。由于反垃圾邮件/反向散射预防机制,您不应该依赖 收件人的服务器每当邮件没有时回复未送达报告 经历。

相关问题