PHP - 批量邮寄和检查服务器响应

时间:2011-07-05 09:18:09

标签: php email zend-mail mail-server bulk-mail

我们向很多用户发送了大量电子邮件(范围为每天20k +)。我们面临的主要问题之一是无效或无效的电子邮件 - 有时我们的用户会删除他们的帐户,更改他们的电子邮件地址而不更新他们的个人资料,或者我们的电子邮件数据库构建者只是抓住了无效或不再有效的电子邮件。这些未解决的返回状态消息不仅会堆积在我们的网站管理员帐户上,还会浪费宝贵的服务器资源,并且由于重复尝试而更频繁地将我们标记为垃圾邮件。

现在,虽然我们的邮件服务器设置为继续尝试向返回“暂时不可用”的地址发送电子邮件,但我希望能够在发送后立即将状态消息发送到PHP。例如,当我的Sender类发送电子邮件时,我想知道返回的状态消息 - 电子邮件是否不再活动,或者服务器不存在,或者电子邮件是否只是移动到另一个地址。

当然,我希望能够收到延迟电子邮件的状态消息。因此,如果由于收件人的电子邮件地址暂时不可用而未收到电子邮件,我希望将“暂时不可用”的消息恢复为Php,但我也希望真正的邮件在发送成功后返回(对于例如,如果电子邮件确实在2天后通过。)

是否有图书馆可以帮助我实现这一目标?如果有的话,最常见的解决方法是什么?

2 个答案:

答案 0 :(得分:2)

与大多数关于PHP和邮件的问题一样,这主要是关于MTA。

批量发送电子邮件本身就是一门科学(好吧,所以更像是黑人艺术),如果你想要合理的可传递率,你需要在这些类型的音量上增加你的游戏。

但回到这个问题。

其中很多是关于如何配置邮件服务器的。 AFAIK,大多数MTA只会在从队列中删除消息时发回失败消息(例如,在最后一次交付尝试之后)。这为跟踪每次尝试提供了2个选项:

1)解析日志文件

2)将尝试次数设置为1(并可选择自行处理重新排队)。

鉴于邮件在成功退出服务器后无法传递,使用传递状态通知(即退回电子邮件)跟踪邮件进度非常有意义 - 因此使用选项2可避免构建不同的代码来处理不同的场景。

如果不知道运行的操作系统是什么,也不知道哪个MTA,就不可能提供更具体的建议。

答案 1 :(得分:1)

symcbean的回答提供了许多理论输入和几种处理你案件的方法。

此外,也许你可以看看其他lib或内置函数是如何工作的。例如,您可以查看:

我之前使用过PHPList,但它已经是一个可靠的解决方案了。我不知道PHP Mailer类,但我可能值得一试(或者至少看看他们如何处理类似的问题)。

此致

最高