Zend framework 使用Zend Mail处理未送达的电子邮件

Zend framework 使用Zend Mail处理未送达的电子邮件,zend-framework,newsletter,mailing-list,zend-mail,mailing,Zend Framework,Newsletter,Mailing List,Zend Mail,Mailing,我用Zend Mail发送时事通讯。我使用了setReturnPath()将所有未送达的邮件通知放在一个位置 现在呢 如何获取无法访问的地址列表 如何读取和解析返回的通知 如何知道邮件返回是因为不存在电子邮件,还是因为超出了配额 我需要发送和检查哪些标题 相关的: 维基 所以 好吧,第二个链接,特别是TimB的答案,很好地解释了这个过程 可能不清楚的是,返回路径只不过是一个普通的电子邮件帐户,即您将收到该地址的电子邮件。Zend_Mail没有等待回复,因此没有地址列表。简短回答: 你不能用

我用Zend Mail发送时事通讯。我使用了
setReturnPath()
将所有未送达的邮件通知放在一个位置

现在呢

  • 如何获取无法访问的地址列表
  • 如何读取和解析返回的通知
  • 如何知道邮件返回是因为不存在电子邮件,还是因为超出了配额
  • 我需要发送和检查哪些标题
相关的:

  • 维基
  • 所以

好吧,第二个链接,特别是TimB的答案,很好地解释了这个过程

可能不清楚的是,返回路径只不过是一个普通的电子邮件帐户,即您将收到该地址的电子邮件。Zend_Mail没有等待回复,因此没有地址列表。

简短回答: 你不能用一种简单的方式,而不是在你的应用程序中

长答覆: 您应该以异步方式并在php应用程序之外处理它(至少部分)。首先,必须将返回地址设置为
sender+recipient=recipientdomain。com@senderdomain.com
如中所示。此时,接收smtp服务器发送的所有通知都将转到该地址

然后,您需要在
senderdomain.com
上设置smtp守护进程来处理此类问题,并在某种管道中处理它们

使用管道,您可以将返回的消息转发给外部程序,该程序解析消息并提取所需信息(即传递失败的原因)

此时,在程序中(可以是应用程序中的cli脚本),您可以将地址标记为失败,并可以选择记录原因

这是一个相当困难的任务,不能在一个简单的应用程序中处理。通常我使用专用软件处理大型邮件列表,例如为您处理此任务


否则,您可以使用外部传递服务,例如它将为您完成脏工作,并使用简单的API报告失败的地址。作为此解决方案的一个附加功能,它们位于所有主要提供商的白名单中,因此只要您遵守一些简单规则(即删除跳转地址并对您的新闻稿使用选择加入策略),您的电子邮件就不会被标记为垃圾邮件。

此类可能会有所帮助。可以确定邮件是否为跳转邮件,并返回带有说明的响应代码: