2

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

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

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

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

4

2 回答 2

2

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

批量发送电子邮件本身就是一门科学(好吧,这更像是一门魔法),如果您想要合理的送达率,您需要大幅提升您的游戏水平。

但回到问题。

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

1)解析日志文件

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

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

如果不知道它在哪个操作系统上运行,也不知道哪个 MTA,就不可能给出更具体的建议。

于 2011-07-05T10:24:00.567 回答
1

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

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

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

问候,

最大限度

于 2011-07-05T10:59:43.297 回答