自动从数据库中删除退回的电子邮件地址?

时间:2012-04-05 20:05:24

标签: php mysql linux apache email

我们的数据库中有一个很大的电子邮件地址列表,人们已经为我们的某个网站注册了新闻简报。

我们有一个cron作业,它使用PHP从数据库中获取电子邮件地址并发送新闻稿。

当电子邮件被退回时,cron作业管理员会收到有关它的电子邮件。

如果我们希望脚本能够自动从数据库中删除退回的电子邮件地址,那么实现它的最佳方法是什么?有没有办法记录退回的电子邮件,然后让脚本解析日志,然后删除错误的电子邮件地址?或者有没有办法通过PHP测试退回的电子邮件地址?

2 个答案:

答案 0 :(得分:2)

您要做的是选择“通用”退回电子邮件地址(例如,bounce @ example.com)。您希望将标题“Return-Path”设置为“bounce@example.com”。

然后,您有一个外部流程检查“bounce@example.com”收件箱中的邮件。除了跳出之外,不要将此电子邮件帐户用于其他任何操作。

您将收到退回,休假消息和其他类型的电子邮件到此收件箱。您只需要训练您的解析器以查找电子邮件中的某些模式。您的模式列表一开始并不全面,但您需要不时手动查看此收件箱,以便进一步训练您的解析器。

您的解析器可以很简单,并且可以查找简单的子字符串甚至是正则表达式。在大多数情况下,不需要正则表达式。

答案 1 :(得分:0)

你需要的是反弹解析器。

您可以通过POP3或IMAP接收退回电子邮件,甚至可以从文件中读取(如果您可以配置自己的MTA)。退回电子邮件将发送到“Return-Path”标题中指定的电子邮件地址。

我所知道的PHP没有好的开源反弹解析器。你可以自己写。你可以从发送mailman的解析器开始(用python编写)。