我正在使用带有发件人地址的 PHP mail() 发送一些通讯。
由于某些我将不得不检查的原因,这些新手中的许多都被退回并向我的发件人地址返回“失败通知”。
目前,这些电子邮件只是返回到我们阅读发件人电子邮件的电子邮件客户端。
我希望我可以为我的营销人员存储和管理所有这些“失败”的电子邮件地址。当然,从电子邮件客户端复制/粘贴每个电子邮件地址非常困难(它们有数百个)。
有没有办法通过 PHP 检测和捕获这些地址以存储在 Mysql 表中?
提前致谢。
您无法从mail()
命令中获取有关失败消息的信息,因为这只会将消息发送到本地邮件服务器进行处理。
您将需要实现一个 cronjob 或以其他方式定期调用的脚本来检查邮箱。因此,您需要使用 PHP 中的IMAP 和 POP 函数来获取消息并处理失败的消息。
或者,您需要查看邮件服务器的手册,以检查是否可以包含一些代码以在服务器遇到故障时执行。所以邮件服务器本身会在你的数据库中标记失败的消息,或者至少调用一个脚本来为它提供失败的消息。
对此的习惯解决方案是 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 应配置为将任何电子邮件路由到此地址到正确的位置(删除失败地址的脚本从你的数据库,或其他)。
当然,如果您使用适当的邮件列表管理器(而且您应该!),它已经包含处理所有这些的逻辑;这应该是一个简单的配置问题。