如何提高电子邮件发送和交付可靠性?

Pet*_*rta 6 java email reliability

当前的应用程序使用Simple Java Mail每天发送几封电子邮件,但有些电子邮件永远不会发送给客户端.

根据应用程序服务器日志,已经有几个邮件服务器超时但这并不能解释所有丢失的电子邮件的情况.添加重试功能有助于解决超时问题,但是有没有其他方法可以提高电子邮件的可靠性?

sym*_*ean 3

SMTP 的本质是它不实现事务完整性。

大约六年前,我对我当时工作的公司的邮件发送失败的原因进行了相当详细的分析。我只能看到接收 MTA,但这表明 MTA 类型和故障率之间有很强的相关性(当时远程端的 Novell Groupwise 和 Sendmail 是最可靠的,MSExchange 最不可靠, qmail 和其他中间)。请注意,这是高度经验性的,可能反映了产品选择与可用技能的比较,而不是特定 MTA 中的内在问题 - 而且现在已经过时了。而且,它不是你可以有效控制的。

尽管由于您有机会在 MTA 之上开发和实现自己的逻辑,但不能保证:

1) 如果邮件在离开 MTA 后失败,您将收到任何退回通知

2) 如果您发送带有 DSN 请求的消息(请参阅 RFC 1891),则远程系统实际上会发回 DSN

要提高投递能力,您可以做的最重要的事情就是了解 SMTP、维护自己的 MTA 并进行相应的配置。如今的关键问题之一是每个人都在努力阻止垃圾邮件 - 每个人都有自己的方法来做到这一点。通常他们不会告诉你他们的秘方的配方。事实上,通过贝叶斯过滤,他们甚至可能不知道!

我想下一个停靠点(在您检查了您的 SPF 是否受到限制并已发布,并且您不是 RBL 后)将是看看您如何确定您的邮件是否已送达 - 正如我所说,您不能依赖 DSN。您不能依靠窃听您的电子邮件(例如,通过使用 HTML 格式发送电子邮件),因为大多数 MUA 不会加载远程内容(同样是为了防止垃圾邮件)。这只留下了保留内容服务器端并发送原始内容的可点击链接的选项。但这又假设您的收件人总是想阅读您的消息。

C。