PHP检测并存储返回的电子邮件

时间:2012-04-20 08:41:24

标签: php mysql email

我正在使用带有发件人地址的PHP mail()发送一些新手。

由于某些原因我必须检查,其中许多新邮件都被退回并向我的发件人地址返回“失败通知”。

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

您无法从mail()命令获取有关失败消息的信息,因为这只会将消息传递到您的本地邮件服务器进行处理。

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

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

答案 1 :(得分:0)

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

例如,如果您的列表被调用fnord@example.org并且您将邮件12345发送到djb@example.net.invalid,则该邮件的信封发件人将类似fnord-12345-djb=example.net.invalid@example.org,并且您的MTA应配置为将任何发送到此地址的电子邮件路由到正确的位置(从数据库中删除失败地址的脚本,或其他)。

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