我正在开发一个工具,它将发送大量邮件(而不是垃圾邮件:),我需要添加一个功能,将检测退回的邮件。是否有与退回相关的标准响应?它会在正文的标题中吗?
发布于 2011-09-13 04:57:34
这通常是通过将发送邮件的Return-Path头设置为每个收件人的唯一地址来实现的。例如,如果您有唯一的用户if来标识每个收件人,则可以使用bounce+userid@example.com。
如果邮件被退回,你收到它并解析接收器(这将bounce+userid@example.com),然后你可以采取适当的行动。
使用+语法可以创建单个邮件用户(bounces@example.com),该用户接收所有退回邮件,并仍然区分收件人。
发布于 2011-09-13 04:59:11
您不能依靠退回邮件的标头或正文来可靠地识别原始收件人,尤其是当您希望自动执行此过程时。即使您添加了自己的自定义标头,弹跳服务器在向您发回通知时也很可能会剥离这些标头。尝试解析邮件正文中的文本以提取收件人的电子邮件地址充其量也是不可靠的,因为没有标准的格式,而且每次退回邮件都是不同的。唯一一条在退回中保持完全不变的信息是返回路径电子邮件地址--您的服务器通告它想要退回到的地址。因此,自动化真正准确的退回捕获的唯一方法是将接收者直接编码到返回路径地址本身中。
这通常是通过对每个收件人使用唯一的值覆盖服务器的默认返回路径地址来完成的,例如email XXXXX @yourdomain.com,其中XXXXX是收件人的电子邮件地址或其他内部标识符的某种编码和/或混淆表示。这项技术需要使用电子邮件服务器,它可以支持这种类型的通配符捕获所有地址,以便您不必为要发送到的每个电子邮件地址设置新的退回帐户。假设您只需将服务器配置为将所有此类your *电子邮件转储到您的脚本中,该脚本只需解码XXXXX即可确定原始收件人是谁。
发布于 2011-09-13 05:21:51
如果您的工具要直接与收件人的SMTP服务器对话,可能更可取的做法是检查通过SMTP protocol返回的4xx (临时故障,例如“邮箱已满”)或5xx (错误,例如“没有这样的用户”)响应的错误代码。由于反垃圾邮件/后向散射预防机制,您不应该依赖收件人的服务器在邮件未通过时回复未送达报告。
https://stackoverflow.com/questions/7393921
复制相似问题