原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html
電子郵件這一已經誕生很多年的互聯網基礎服務並沒有隨着時間的推移而慢慢消亡,實際上它的生命力比大多數人預料的要強得多,至少到目前為之它還是互聯網不可缺少的一部分。因此郵件系統就成了大多數網站重要組件,我在開發SegmentFault郵件通知系統的時候有幸測試了目前比較常見的三大郵件發送服務。
這里可以大致介紹下這三大服務的特點
大致介紹
AWS SES
我們最早使用的就是它,價格非常便宜,便宜到每月的費用基本上可以忽略,而且API也非常友好,實在是初創網站的不二選擇。但是它有三個非常明顯的缺點
- 經常容易被牆,因此你至少要有一台境外的VPS做透明代理,建議你最好生成一個私有的SSL證書,或者你不差錢買個公有的也可以,總之盡量別裸奔,原因你們都懂的。
- 不支持群發,雖然你可以在郵件中一次CC給多個收件人,但是用戶在收到郵件后會在收件人中看到其他人的名字,很顯然不夠友好。
- 最要命的一點那就是QQ郵箱目前已經基本屏蔽SES了,而且因為是共享發送服務器IP,所以基本無解。
前面兩點有解決方法,可以參考我寫過的《用PHP實現一個Amazon SES的代理服務器》。
SendCloud
由於有官方的合作關系,我在SendCloud還在內部測試的時候,就拿到了使用資格,並在SF線上的一些不重要的服務上進行了測試。
SendCloud對國內郵箱的支持是非常好的,上面提到的QQ郵箱服務在SendCloud里面沒有遇到,所有郵件均能准確送達。而且由於是國內線路,所以API響應速度也非常快。
但是我有點擔心它對國外郵箱的支持,因為已經出現過發送到windows live郵箱收不到的情況,不過后來得到了解決。不過我建議大家在發送國外郵箱時還是使用國外的郵件服務,因為很有可能因為眾所周知的訪問限制原因,我們的郵件無法送達,畢竟搜狐也解決不了政策上的問題。
最后要說一點的是,SendCloud的定價有點偏貴。免費用戶每天200封的限制 還不如限制每月的總封數。而且對於群發郵件來說,我用SES每個月100塊人民幣就搞定的量,在SendCloud上可能要用五六百了。最后每個月即使你一封郵件也不發,也會扣59塊錢,這也太坑爹了吧,難道是參考手機的最低消費來算的?我還是比較喜歡按發送量來收費比較透明。
不過針對國內某些比較難搞定的郵箱,用SendCloud還真是挺合適的。
Mailgun
首先贊一下它的官網頁面設計,清新脫俗。從它的logo也可以看出,這公司已經成為rackspace旗下的了。
rackspace何許人也,如果這么著名的IDC你都沒聽過,我只能告訴你github的就托管在它上面。而Mailgun官網下方合作伙伴logo列表里大大的github也顯示它們之間不凡的關系。
Mailgun的免費賬戶還是挺實用的,每個月10000封的量足夠中小網站使用了。當然價格還是比SES略貴,但是人家的郵件到達率可比SES高多了,目前我們正在測試SF的通知郵件,基本沒有被拒收,即使在最奇葩的QQ郵箱也能做到完全送達。
另外我要說一下Mailgun的API,設計的太贊了,不需要任何特殊的sdk支持,只需要用curl去post相應的參數就行了,這才是真正的REST接口!
服務后台
SES的服務后台還真是簡約又簡單,當然它是整合到了AWS Management Console里,你只能看到個大概信息,上方是賬戶基本概況
可以看到,由於我平時的發送量比較大,SES已經自動將我的配額調整到每天10萬封的發送量,每秒鍾最多可以發送28封郵件。需要注意的是這個數值是漸進式增長的,你開始也許只有1000封的配額,這主要是防止某些垃圾郵件發送服務一開始就濫用。
下方是SES的統計圖表,由於我目前就是拿SES來群發周報所以可以看到很有規律的數值起伏。值得注意的是SES沒有日志查看,這就是所有的信息了。所以出了問題你在后台是查不到的,只能你自己記錄每封郵件的返回信息了。
相比較而言SendCloud提供的信息就非常全面了,無論是概覽的趨勢圖
還是每封郵件的發送記錄,都有顯示。
但是東西一多就顯得很雜亂,某些東西讓人摸不着頭腦,比如下方的這個收信域名是個什么東西,頁面上也沒有相應的幫助鏈接。我當時只是按發信域名設置了一下,后來發現設不設置都沒影響
最后出場的是Mailgun,這也是讓我最喜歡的一個后台設計,dashboard頁清晰明了
日志頁可以追蹤每封郵件的狀態
最后要說的
前段時間看到知乎把郵件服務從Mailgun部分遷移到SendCloud了,其實我也建議大家這么做。針對國內部分郵箱,使用SendCloud來發,其它郵箱就用Mailgun。如果是群發周報這種對到達率要求不高的郵件,則可以選用SES這種價格便宜量又足的服務。最后幾點忠告
- DKIM是必須要做的
- 把你的發信域名與主域名分開,用子域名比如mail.xxx.com,這樣如果某個域名不慎被封還有回旋的余地
- 如果是土豪,建議單獨購買獨立ip的發信服務,這樣被封殺的可能性最小,而且有了ip就可以跟服務商談加入白名單了。目前Mailgun和SendCloud都有這個服務。