2010-01-25 59 views
6

当前应用程序使用Simple Java Mail每天发送几封电子邮件,但一些电子邮件从未将其发送给客户端。如何提高电子邮件发送和传送可靠性?

基于应用服务器的日志出现了几个邮件服务器超时,但这并不说明丢失的电子邮件的所有案件。添加重试功能有助于解决超时问题,但是还有其他方法可以提高电子邮件的可靠性吗?

回答

3

这是SMTP的本质,它没有实现事务完整性。

大约6年前,我做的,为什么从公司的邮件我是在工作,然后失败了相当的相关详细分析。我只能看到接收的MTA,但这表明MTA类型与故障率之间存在非常强的相关性(当时,远程端的Novell Groupwise和Sendmail是最可靠的,MSExchange最少, qmail和其他人)。请注意,这是高度经验性的,可能反映了产品选择与可用技能,而不是特定MTA中的内在问题 - 而现在它已过时。此外,它不是你可以有效控制的东西。

虽然,因为你必须制定和实施对MTA的顶部自己的逻辑的机会,也没有保证:

1)如果离开你的MTA后一条消息失败,你会得到任何反弹通知回

2)如果您发送一条消息,一个DSN请求(参见RFC 1891)远程系统实际上将发回DSN

你可以做些什么来改善产能的最重要的事情是要知道很多关于SMTP,维护你自己的MTA并相应地配置它。这些日子的关键问题之一是每个人都试图阻止垃圾邮件 - 每个人都有自己的方法来做到这一点。通常他们不会告诉你他们秘密酱料的秘方。确实,用贝叶斯过滤,他们甚至可能不知道!

我想接下来的通话端口(在您检查过SPF后是限制性的并且已发布,并且您不是RBL'd的)将看你是如何建立的,如果你的邮件正在交付 - 作为我说过,你不能依赖DSN。您不能依靠窃听您的电子邮件(例如通过将其作为HTML发送出去),因为大多数MUA不会加载远程内容(再次阻止垃圾邮件)。这只剩下保留内容服务器端和发送可点击链接到原始内容的选项。但是,这又假定你的收件人总是想阅读你的信息。

C.

1

如果你只是想每天发送几封电子邮件,以有限的一组接收器,这一切,试图通过Gmail帐户发送它们。

+0

获取Java邮件通过谷歌的SMTP服务器发送需要一点Java的巫术和的帐户授权。我自己并没有这样做,但我肯定会问这个问题已在StackOverflow上提出 – 2010-01-25 19:02:38

2

提供生产质量邮件服务器设置您的应用程序,并让它处理的可靠的邮件发送所有的非常脏的细节。您可能会遇到一些限制,例如旨在防止垃圾邮件的垃圾列表。

一个合理简单的情况是Linux机器上的Postfix。我个人喜欢Ubuntu

2

托尔比约恩和symcbean双双提供很多有用的信息,但它可能是它的完整性势不可挡。我会尽量让它更易于使用:

关于最糟糕的事情,您可以在您的应用程序中构建一个SMTP客户端,并依靠它将邮件发送到世界某个地方。一个更好的解决方案是在你自己的盒子上本地运行一个“标准”MTA和/或SMTP服务器,或者在最坏的情况下在你自己的网络中运行。

因此,您的应用程序只需将邮件尽可能放到您自己的邮件服务器上,邮件服务器希望位于同一台计算机的端口25上。没有SSL编码,没有垃圾邮件过滤,没有一堆可能出错的东西。另外,如果您的邮件服务器与您的应用程序在同一台计算机上,则它们(通常)会同时关闭或同时启动。

一旦你的应用程序将邮件推送到本地邮件服务器(这是快速和几乎万无一失),这是服务器的问题,让邮件发送到最终目的地。在Linux服务器上,您将安装类似Sendmail,qmail,exim或postfix的东西;在Windows上,我不知道。

这些“开箱即用”的邮件服务器中的任何一个都非常擅长将邮件取出。已经内置了自动重复,在(例如)1小时,2小时,4,12,24和48小时后重试。您的邮件服务器将尽其最大的努力来提供您的邮件,而且您将尽力而为,无需付出额外的努力。失败的尝试将显示在邮件服务器的日志中,您可以分析并得出结论。如果在最后一次可能的尝试后失败,这在日志文件中也有记录,并且您可以得出结论,接收方有问题。所有这些权力已经内置,你甚至不应该想到试图将它建立到你自己的邮件客户端。

最后说明:物理上传输可能成功,即邮件已发送,但接收方的邮件服务器或客户端将其视为垃圾邮件;或(人)收件人只是意外删除它。没有软件可以肯定地解决这个问题。

2

在我看来,运行自己的邮件服务器正在迅速成为过去。

如果我的应用程序将发送超过几封电子邮件,我通常会设置一个电子邮件服务提供商并忘记它。他们中的大多数让你在你的应用程序中使用他们的SMTP。

作为奖励,他们中的大多数会向您显示谁会对您的电子邮件进行什么操作。

一些在空间最有名的名字是sendgridmailjetpostmarkApp,但你可以发现一个有趣的比较here

+0

是的,我现在完全同意这一点。 – 2012-02-04 08:23:52