2009-03-18

关于使用第三方SMTP服务器发送系统邮件的问题

如题,这可能是每个没有多少财力但又不能缺少系统邮件这项功能的程序员们都必须面对的问题,限于财力,我们不能架设自己的SMTP服务器,所以只能借助第三方的免费的SMTP服务器了,如是乎,有了思路:
最先出来的思路肯定是诸如163,sina,sohu这样的Email ISP的SMTP服务器,我们注册账号然后使用这个账号来转发我们的系统邮件,并且更改邮件头,使其符合我们需要的发信人,收信人.开始时你可能会觉得这方法不错,可是,不久问题就会出来——
  • 那就是目前的163不能自主更改邮件头,否则会验证失败,而诸如sina的可用性也值得考虑,在我的实验中,没有成功过几次。
  • 更重要的一点是,如此的使用第三方的服务器,势必会造成此账号的异常,可能会被封号,或者会涉及到法律问题
所以,这种方法的可用性是用你的使用频率成反比的,你可能会申请多个第三方的账号作为随机的SMTP服务器以平摊压力,但是某个账号的异常必然会影响到系统的可用性,所以这种方法只能是次选。

最近我正好遇到了这样的问题,也是首先使用前文中的方法,但最新注册的163,sina账号的验证已不能通过(可能ISP在服务器端作了相关的验证,但一些旧的账号依旧可用),经过一番调研,最终得出了一个相对可用性有百倍提高的方法——使用GAE的Email服务,这是google允诺免费提供的服务,因而可用性方面得以保证,经过实验后,总结以下的几点不足:
  • GAE经常会被和谐,这是很致命的,所以可结合方法1来提高可用性
  • GAE的邮件可能有若干分钟的延时
  • 对于免费的GAE服务,似乎有相关的限制(待调研确定)
  • 其它
但总体而言,这两种方法结合起来,我们要实现免费的SMTP系统邮件服务那是没有什么问题的。

没有评论: