2012-04-20 30 views
1

我正在发送一些使用带有发件人地址的PHP邮件()的新邮件。PHP检测并存储返回的电子邮件

由于某些原因,我将不得不检查,这些newlsetters中的许多被反弹,并返回一个“失败通知”到我的发件人地址。

目前,这些电子邮件只是简单地返回到我们阅读发件人电子邮件的电子邮件客户端。

我希望我能为我的营销人员存储和管理所有这些“失败”的电子邮件地址。 当然,从电子邮件客户端复制/粘贴每个电子邮件地址是非常困难的(它们是数百个)。

有没有办法检测并通过PHP捕获这些地址存储在Mysql表中?

在此先感谢。

+0

取决于您作为邮件服务器使用的内容,请添加详细信息。总是有选项,比如PHP有IMAP代码来打开和阅读IMAP邮箱 - 你可以写些东西来做到这一点,并将电子邮件放入MySQL数据库。 – James 2012-04-20 08:42:22

回答

0

您不能从mail()命令中获取有关失败消息的信息,因为这只能将消息发送到本地邮件服务器进行处理。

您将需要实现一个cronjob或以其他方式定期调用的脚本来检查邮箱。因此,您需要使用PHP中的IMAP and POP functions来获取消息并处理失败的消息。

或者您需要检查邮件服务器的手册以检查服务器遇到故障时是否可以包含一些代码。因此,邮件服务器本身会在数据库中标记失败的消息,或者至少调用一个提供失败消息的脚本。

0

对此的习惯解决方案是VERP http://cr.yp.to/proto/verp.txt - 基本上,为每个消息使用唯一的信封发件人;发送回该特定地址的任何内容都是来自您尝试发送到的地址的反弹。

例如,如果你的列表称为[email protected],你发短信12345到[email protected]然后该消息的信封发件人会像[email protected]和您的MTA应配置路由任何电子邮件到这个地址到正确的地方(从您的数据库中删除失败地址的脚本,或其他)。

当然,如果你使用一个正确的邮件列表管理器(你应该!),它将已经包含逻辑来处理所有这些;它应该是一个简单的配置问题。