【问题标题】:Handling undelivered emails using Zend Mail使用 Zend Mail 处理未送达的电子邮件
【发布时间】:2011-10-30 02:28:12
【问题描述】:

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

现在呢?

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

相关:

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      简答:

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

      长答案:

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

      然后你需要在senderdomain.commail exchanger 设置 smtp 守护进程来处理那种bounce messages 并在某种管道中处理它们。

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-04-22
          • 2010-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-21
          • 2021-06-17
          相关资源
          最近更新 更多