PHP邮件(),如何获得未交付的地址列表?

时间:2010-06-23 11:06:18

标签: php email logging

我收到一封电子邮件,因为mail()发送的每个未送达地址无法到达。 由于这可能是一个痛苦的过程,为了保持复制粘贴每个地址,我想知道是否可以访问LOG或其他东西?

一些说明: - 我已经在GoDaddy服务器上运行了这个应用程序(我知道它很糟糕);

感谢您的关注; D

4 个答案:

答案 0 :(得分:0)

  

我想知道是否可以访问LOG或其他东西?

可能 - 这取决于MTA(邮件传输代理)是什么,它是如何配置的以及您是否有权访问该文件。

  

我已经在GoDaddy服务器上运行此应用程序

以上是GoDaddy提供商的所有问题。

MTA日志应记录MTA未能卸载其他地方的消息的详细信息,但其他地方可能是智能中继(即仍在发送方) - 在在这种情况下,您需要查看中继MTA的日志,以查看它是否设法将邮件传递给其中一个收件人MX。即使消息到达收件人MX,您也不知道它已成功传递。按照惯例,接收系统应该在DSN失败的情况下发回DSN(并且您可以专门询问DSN而不管结果如何),但很多系统都没有正确实现这一点。

无论它是否提供有关失败的某些消息的信息,您都需要轮询返回邮箱以识别失败。

下进行。

答案 1 :(得分:0)

如果mail()立即失败,则返回false,然后您收到任何电子邮件。但是,如果在邮件发送之后但在收到邮件之前出现问题,则会收到一封电子邮件。

mail()函数会将电子邮件发送到某个邮件服务器,邮件服务器会将邮件发送给另一个邮件服务器,直到它到达目的地。当用户不存在时,只能在目标邮件服务器上发现它,并通过一封名为 bounce 的电子邮件进行响应。

无法对这些退回电子邮件进行分组,因为目标邮件服务器不知道它们来自同一个脚本。

答案 2 :(得分:0)

没有这样的日志,因为来自接收邮件服务器的反馈不是立即的。只有“无法送达”的消息会被退回给你。

但是,应该可以指定指向单独邮箱的reply-toerrors-to地址。这样可以更容易地找出哪些收件人地址失败。

这是我能想到的将失败消息分组的最佳方式。

答案 3 :(得分:0)

您拥有的另一个选项是将传入的电子邮件传递给PHP脚本并以此方式处理它。如何实现这取决于您拥有的服务器设置以及您的服务器是否设置为使用sendmail或exim。

这是一个很好的教程,位于here

相关问题