我们向许多用户发送大量电子邮件(每天 2 万多封)。我们面临的主要问题之一是无效或死电子邮件 - 有时我们的用户删除他们的帐户,更改他们的电子邮件地址而不更新他们的个人资料,或者我们的电子邮件数据库构建器只是捕获无效或不再活跃的电子邮件。这些 Unresolved 返回状态消息不仅会堆积在我们的网站管理员帐户上,还会浪费宝贵的服务器资源,并且由于重复尝试而更频繁地将我们标记为垃圾邮件。
现在,虽然我们的邮件服务器设置为继续尝试将电子邮件发送到返回“暂时不可用”的地址,但我希望能够在发送后立即将状态消息接收到 PHP 中。例如,当我的 Sender 类发送电子邮件时,我想知道返回的状态消息 - 电子邮件是否不再事件,或者服务器不存在,或者电子邮件只是被移动到另一个地址。
当然,我也希望能够收到延迟电子邮件的状态消息。因此,如果由于收件人电子邮件地址暂时不可用而未发送电子邮件,我希望将“暂时不可用”消息返回到 Php 中,但我也希望在发送成功后传回真正的消息(对于例如,如果电子邮件确实在 2 天后收到)。
是否有一个库可以帮助我实现这一目标?解决此问题的最常见方法是什么(如果有)?
最佳答案
与大多数有关 PHP 和邮件的问题一样,这主要与 MTA 有关。
批量电子邮件发送本身就是一门科学(好吧,所以更像是一门魔法),在这种数量下,如果您想要合理的送达率,您需要大幅提高您的水平。
回到问题。
其中很大一部分是关于如何配置邮件服务器的。 AFAIK,大多数 MTA 只会在消息从队列中删除时(例如,在最后一次尝试传递之后)发回失败消息。其中提供了 2 个选项来跟踪每次尝试:
1)解析日志文件
2) 将尝试次数设置为 1(并且可以选择自行处理重新排队)。
考虑到邮件在成功离开服务器后可能无法投递,因此使用投递状态通知(即退回电子邮件)来跟踪邮件的进度非常有意义 - 因此使用选项 2 可以避免出现构建不同的代码来处理不同的场景。
如果不知道它运行在什么操作系统上,也不知道哪个 MTA,就不可能给出更具体的建议。
关于PHP - 批量邮件和检查服务器响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580382/