我正在使用Zend Mail发送简报。我使用setReturnPath()
将所有未传递的邮件通知放在一个地方。
现在怎么样?
相关:
答案 0 :(得分:1)
你不能以一种简单的方式而不是你的应用程序那样做。
您应该以异步方式处理它并在您的php应用程序之外(至少部分)。首先,您必须将回复地址设置为sender+recipient=recipientdomain.com@senderdomain.com
,如TimB answer。此时,接收smtp服务器发送的所有通知都将转到该地址。
然后你需要在senderdomain.com
mail exchanger设置smtp守护进程来处理那种bounce messages并在某种管道中处理它们。
使用管道,您可以将返回的消息转发到外部程序,该程序解析消息并提取所需的信息(即交付失败的原因)
在程序中的那一点(可以是应用程序中的cli脚本),您可以将地址标记为失败,并可选择记录原因。
这是一项非常困难的任务,无法在简单的应用程序中处理。通常我会使用专用软件进行大型邮件列表处理,例如sympa,它会为您完成此任务。
否则,您可以使用Sendgrid之类的外部传递服务,它将为您执行脏任务,并使用简单的API报告失败的地址。作为此解决方案的奖励,它们位于所有主要提供商的白名单中,因此,只要您遵守一些简单的规则(即删除弹出地址并为您使用选择加入政策),您的电子邮件就不会被标记为垃圾邮件通讯)
答案 1 :(得分:1)
这门课可能会有所帮助。可以确定邮件是否是退回并返回带有说明的响应代码:
答案 2 :(得分:0)
嗯,第二个链接,特别是TimB的答案,很好地解释了程序。
可能不太清楚的是,返回路径只是一个普通的电子邮件帐户,即您将收到该地址的电子邮件。 Zend_Mail没有等待响应,因此没有地址列表。