3

我正在使用 Zend Mail 发送时事通讯。我曾经setReturnPath()将所有未送达的邮件通知放在一个地方。

现在怎么办?

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

有关的:

4

3 回答 3

1

简短的回答:

你不能以简单的方式而不是在你的应用程序中做到这一点。

长答案:

您应该以异步方式在您的 php 应用程序之外(至少部分地)处理它。首先,您必须将返回地址设置为类似于TimB answersender+recipient=recipientdomain.com@senderdomain.com中的内容。此时接收 smtp 服务器发送的所有通知都会发送到该地址。

然后你需要在senderdomain.com 邮件交换器上设置 smtp 守护进程来处理这种退回邮件并在某种管道中处理它们。

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

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

这是一项相当困难的任务,无法在简单的应用程序中处理。通常我会使用专门的软件来处理大型邮件列表,例如sympa,它会为您处理这项任务。

否则,您可以使用诸如Sendgrid之类的外部交付服务,它会为您完成繁琐的工作,并使用简单的 API 报告失败的地址。作为此解决方案的一个好处,它们位于所有主要提供商的白名单中,因此只要您遵守一些简单的规则(即删除退回地址并为您的用户使用选择加入策略),您的电子邮件就不会被标记为垃圾邮件通讯)

于 2011-08-19T01:08:09.657 回答
1

这门课可能会有所帮助。可以判断邮件是否被退回并返回带有描述的响应码:

于 2011-08-30T20:00:51.233 回答
0

好吧,第二个链接,尤其是 TimB 的回答很好地解释了这个过程。

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

于 2011-08-19T00:15:41.400 回答