使用Zend Mail处理未传递的电子邮件

时间:2011-08-18 19:43:31

标签: zend-framework newsletter mailing-list zend-mail mailing

我正在使用Zend Mail发送简报。我使用setReturnPath()将所有未传递的邮件通知放在一个地方。

现在怎么样?

  • 如何获取无法访问的地址列表?
  • 如何阅读和解析返回的通知?
  • 如何知道由于不存在的电子邮件或仅超出配额而返回的邮件是什么?
  • 我需要发送和检查哪些标题?

相关:

3 个答案:

答案 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没有等待响应,因此没有地址列表。