原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html

电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上它的生命力比大多数人预料的要强得多,至少到目前为之它还是互联网不可缺少的一部分。因此邮件系统就成了大多数网站重要组件,我在开发SegmentFault邮件通知系统的时候有幸测试了目前比较常见的三大邮件发送服务。

这里可以大致介绍下这三大服务的特点

大致介绍

AWS SES

我们最早使用的就是它,价格非常便宜,便宜到每月的费用基本上可以忽略,而且API也非常友好,实在是初创网站的不二选择。但是它有三个非常明显的缺点

  1. 经常容易被墙,因此你至少要有一台境外的VPS做透明代理,建议你最好生成一个私有的SSL证书,或者你不差钱买个公有的也可以,总之尽量别裸奔,原因你们都懂的。
  2. 不支持群发,虽然你可以在邮件中一次CC给多个收件人,但是用户在收到邮件后会在收件人中看到其他人的名字,很显然不够友好。
  3. 最要命的一点那就是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这种价格便宜量又足的服务。最后几点忠告

  1. DKIM是必须要做的
  2. 把你的发信域名与主域名分开,用子域名比如mail.xxx.com,这样如果某个域名不慎被封还有回旋的余地
  3. 如果是土豪,建议单独购买独立ip的发信服务,这样被封杀的可能性最小,而且有了ip就可以跟服务商谈加入白名单了。目前Mailgun和SendCloud都有这个服务。

邮件发送服务AWS SES,Mailgun以及SendCloud(转)的更多相关文章

  1. 免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持

    一般来说网站注册.论坛消息.新闻推送.广告宣传等都会有发送邮件服务,大量的邮件发送服务如果用PHP来发送,一是会消耗主机资源,二是容易被各大邮箱判定为垃圾邮件而被拒收.用第三方的邮局服务发送邮件,可以 ...

  2. 【故障公告】SendCloud 邮件发送服务故障造成大量 QQ 邮箱收不到邮件

    抱歉,由于我们所使用的搜狐旗下的 SendCloud 邮件发送服务出现故障,今天上午大量发往 @qq.com 邮箱的邮件无法正常发送,从 SendCloud 管理控制台看这些邮件一直处于“请求中”的状 ...

  3. c#邮件发送服务

    邮件发送服务 项目中会遇到定时给某人发送邮件的功能要求,这里是京东的一段代码,当然也是我同事找的,我记录学习一下,以免忘记. 这是解决方案 这里主要是工具:日志工具,链接数据库工具,发送邮件工具 这里 ...

  4. SpringBoot系列(十四)集成邮件发送服务及邮件发送的几种方式

    往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...

  5. ThinkPHP5 封装邮件发送服务(可带附件)

    1.Composer 安装 phpmailer composer require phpmailer/phpmailer 2.ThinkPHP 中封装邮件服务类 我把它封装在扩展目录 extend/M ...

  6. ThinkPHP5 封装邮件发送服务(可发附件)

    1.Composer 安装 phpmailer 1 composer require phpmailer/phpmailer 2.ThinkPHP 中封装邮件服务类 我把它封装在扩展目录 extend ...

  7. 纯java实现邮件发送服务(亲测好用)

    今天自己测试了一下用java代码实现发送有限的服务,非常简单.直接贴代码: import com.sun.mail.util.MailSSLSocketFactory; import javax.ma ...

  8. 使用spring的邮件发送功能

    使用spring提供的MailSender和JavaMailSender类. 1.邮件对象类 package cn.luxh.app.mail; import java.util.List; impo ...

  9. Java实现多线程邮件发送

    利用java多线程技术配合线程池实现多任务邮件发送. 1.基本邮件发送MailSender package hk.buttonwood.ops.email; import java.io.File; ...

随机推荐

  1. from 表单提交

    html端代码 <body> <div id="dlg" class="easyui-panel" buttons="#dlg-bu ...

  2. hdu4760Good Firewall

    4760 数组模拟就可以了 读的时候可以整数读入 #include <iostream> #include<cstdio> #include<cstring> #i ...

  3. ERROR 1442 (HY000):because it is already used by statement which invoked this stored function/tr

    看到mysql的触发器,随手写了一个: mysql> create trigger t_ai_test -> after insert on test -> for each row ...

  4. CAS 在 Tomcat 中实现单点登录

    单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统 中,用户只需要登录一次就可以访问所有相互信任的应用系统.CA ...

  5. HDU 3032 (Nim博弈变形) Nim or not Nim?

    博弈的题目,打表找规律还是相当有用的一个技巧. 这个游戏在原始的Nim游戏基础上又新加了一个操作,就是游戏者可以将一堆分成两堆. 这个SG函数值是多少并不明显,还是用记忆化搜索的方式打个表,规律就相当 ...

  6. JavaScript——new Date().getMonth()

    new Date().getMonth(); 说明:参照现在的月份,getMonth()返回的是0-11的数字,也就是说0=1月,1=2月……11=12月 当前的月份就是,new Date().get ...

  7. C语言之内存覆盖

    在实现memcpy函数的时候,我们说过要考虑内存覆盖的问题,到底什么是内存覆盖呢,他的出现对程序到底有什么影响呢?我们又要如何去解决这种问题的发生? 首先先看一般人经常实现的memcpy函数: #in ...

  8. HiveQL 与 SQL的异同

    1 select 别名 (1)别名一定要加as 例:select ID as stuID from students (2) Hive QL不支持在group by, order by 中使用sele ...

  9. YouTrack Changing Database Location for EXE Distribution(windows service)

    If you have installed YouTrack from EXE Distribution, then the best way to change the database locat ...

  10. Heritrix源码分析(十二) Heritrix的控制中心(大脑)CrawlController(一)(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/650694 本博客已迁移到本人独立博客: http://www.yun5u.com/ ...