做业务系统、电商或 SaaS 的团队,大多绕不开邮件。注册验证码、订单通知、账单提醒、活动推广,都要靠邮件把消息送到用户手里。阿里云邮件推送(Direct Mail)就是为这类需求准备的服务。它提供 API 和 SMTP 两种发送方式,域名配置、退信处理和发送日志也都放在控制台里,省去了自己维护邮件服务器的麻烦。

这篇文章先讲清楚它适合什么场景,再用一个假设的迁移案例说明实际怎么做,最后列出接入步骤和送达率的几个关键点。如果你正在选型或准备上线,可以顺着看下来。
一、阿里云邮件推送适合什么场景
按用途,邮件大致分两类,处理方式差别不小。
- 事务邮件:验证码、密码重置、订单确认这类由用户操作触发的邮件。用户在等,所以对速度和送达率要求最高。
- 营销邮件:促销通知、电子报、活动推广,面向大量用户群发。重点在退订管理和发送节奏。
两类邮件最好分开发。营销内容如果被大量投诉或标记为垃圾邮件,发信域名的信誉会受损,验证码也会跟着进垃圾箱。阿里云支持按发信地址或子域名来区分,这一点在规划时就该定下来。
二、一个假设的迁移案例
设想一家日均几万单的中型电商平台,我们叫它 A 平台。它一直用自建邮件服务器发订单通知和会员验证码。业务涨起来以后,问题逐渐冒出来:
- 大促期间邮件排队,验证码有时要等好几分钟,用户已经放弃等待了;
- SPF、DKIM 配置不完整,部分邮件被 Gmail、Outlook 归入垃圾箱,但没人能第一时间看出原因;
- 运维要长期维护服务器、IP 信誉和退信队列,人力一直在消耗。
如果 A 平台决定迁移,比较稳妥的做法是分三步走:
- 先把域名认证做好。在控制台添加发信域名,按提示配置 SPF、DKIM、DMARC,确认验证通过后再切流量。DMARC 可以先用 p=none 观察一段时间,确认没有误伤正常邮件,再逐步收紧策略。
- 事务和营销分开发。验证码和订单通知用 noreply 之类的独立地址,营销邮件换一个子域名发送,两边的信誉互不影响。
- 小流量灰度。先把一小部分非核心邮件切到新通道,观察一周左右的送达率、打开率和退信率,数据稳定了再全量切换。
迁移完成后,最直接的变化通常是验证码基本不再排队,运维也不用再盯着服务器。这只是一个假设的思路,具体效果取决于你的业务规模、邮件内容和域名现有的信誉,不能直接套用。
三、接入的基本步骤
如果你准备开始用,建议按下面的顺序来:
- 登录阿里云控制台,开通邮件推送服务并完成实名认证。
- 添加发信域名,按提示在 DNS 里配置 SPF、DKIM、DMARC 记录。记录生效需要一点时间,验证没通过先别急着上线。
- 创建发信地址并设置别名,比如验证码用一个地址,订单通知用另一个,出了问题好定位。
- 用 RAM 子账号获取 AccessKey,只授予邮件推送相关的权限。别直接用主账号的 AccessKey,一旦泄露影响范围很大。
- 用 API 或 SMTP 发一封测试邮件,到收件箱里确认能收到,再到控制台的发送日志里看状态是否为已投递。
Java、Python、Node.js 等主流语言都有官方 SDK,写接口本身不复杂。真正容易出问题的是前面的域名配置和权限划分。这两步做扎实,后面省很多事。
四、影响送达率的几个因素
邮件进不进收件箱,主要看发信方的信誉和邮件内容本身。下面几点值得在上线前后反复检查:
- 认证记录要完整。SPF、DKIM、DMARC 缺一项,收件方就很难确认发信人身份,过滤会更严。
- 别在短时间内大量发同样的内容。突发流量要提前在控制台申请配额调整,不要等到大促当天才发现额度不够。
- 定期清理无效地址。硬退信的地址应该直接剔除,长期不打开的地址也可以单独分组,减少对发信信誉的拖累。
- 营销邮件一定要有退订入口。这既是合规要求,也能减少用户直接点“垃圾邮件”的概率。
- 标题和正文要对得上。标题堆叠感叹号和促销词,正文却讲别的事,很容易被过滤规则盯上。
另外,控制台里的退信原因分析值得经常看。它能帮你判断问题出在地址、内容还是信誉上,调整方向会清楚很多。
五、几个常见的坑
有几类问题在团队里出现得比较频繁。
- 额度用完才想起申请。新账号的默认配额不高,业务量上来之前就该提前申请。
- 子账号权限过宽。为了省事直接共用主账号密钥,代码仓库一旦泄露,麻烦会大很多。
- 模板变量没有转义。动态内容未做校验,轻则渲染出错,重则带来注入风险。
- 只看发送成功数。成功数很好看,但退信和投诉数据不看,问题会悄悄积累,等影响到业务才暴露。
如果业务涉及用户个人信息,邮件正文也要注意。敏感信息不要明文放在邮件里,验证码类邮件应当设置较短的有效期,并且只能使用一次。
六、写在最后
用阿里云邮件推送,核心是把发送基础设施交出去,让团队把时间放在邮件内容和用户体验上。前期域名认证和权限划分花的功夫最多,但做完之后维护成本会明显下降。如果你还在犹豫,可以先找一个不太重要的场景试跑,看看送达率和日志是否符合预期,再决定要不要全面切换。