邮件服务至少分成三种:事务邮件、产品生命周期邮件和营销群发。密码重置、支付回执、邀请邮件需要稳定及时;欢迎、试用提醒和召回邮件需要事件触发和流程;新闻通讯则更关注联系人、分组、退订和营销统计。
把三者全部塞进一个“发邮件 API”里,早期看起来简单,用户量起来后很容易遇到退订、域名信誉、模板、统计和权限混乱的问题。
先分三类邮件
| 类型 | 示例 | 主要要求 |
|---|---|---|
| 事务邮件 | 验证码、找回密码、订单回执、账单通知 | API 简洁、送达稳定、低延迟、可追踪 |
| 产品邮件 | 欢迎、引导、试用到期、功能教育、召回 | 事件触发、分支、用户属性和生命周期流程 |
| 营销邮件 | Newsletter、产品更新、活动和促销 | 联系人、分组、退订、模板和活动分析 |
总表
| 项目 | 主要定位 | 接入方式 | 适合场景 | 主要代价 |
|---|---|---|---|---|
| Resend | 开发者邮件 API | SDK / API | 事务邮件和简单 Broadcast | 营销自动化能力相对轻 |
| Amazon SES | 云邮件基础设施 | API / SMTP / SDK | 大规模事务邮件和低成本发送 | 控制台、模板和产品邮件能力需要自己补齐 |
| SendGrid | 事务与营销邮件 | API / SMTP / 控制台 | 事务邮件、模板、联系人和营销发送 | 产品范围广,发送信誉和配置要自己治理 |
| Mailgun | 开发者邮件 API | API / SMTP | 事务邮件、路由、验证和开发者集成 | 营销运营能力不是重点 |
| Loops | SaaS 产品邮件 | API / 事件 / 可视化流程 | 欢迎、试用、召回和产品更新 | 更聚焦 SaaS,复杂营销场景要核对能力 |
| Customer.io | 生命周期自动化 | 事件 / API / 工作流 | 产品行为触发、分群和多渠道旅程 | 配置和数据治理比简单邮件 API 更复杂 |
| Brevo | 营销与事务邮件 | API / 控制台 / SMTP | 邮件营销、联系人和多渠道触达 | 界面和功能较多,开发体验不如纯 API 服务 |
| Klaviyo | 电商和营销自动化 | 事件 / 联系人 / 流程 | 电商分群、营销自动化和收入归因 | 对简单 SaaS MVP 可能偏重 |
| Mailchimp | Newsletter 和营销 | 控制台 / API | 邮件列表、活动和营销模板 | 产品较成熟,事务邮件和工程集成需要单独设计 |
| Postmark | 事务邮件 | API / SMTP | 密码、通知、回执和系统邮件 | 不以复杂营销自动化为主 |
Resend:开发者友好的事务邮件起点
Resend 适合在代码里快速发送邮件。常见接入方式是:后端创建 API Key,验证自己的发送域名,使用 SDK 发送带模板变量的邮件,再通过 Webhook 接收送达、退信和投诉事件。
它适合:
- 注册验证和找回密码;
- 订单、支付和订阅通知;
- 简单的产品更新和 Broadcast;
- 想用 React Email 或代码管理模板的团队。
域名验证不是可选步骤。至少要配置 SPF 和 DKIM,并根据发送场景考虑 DMARC。建议使用独立的邮件子域名,把产品邮件、营销邮件和主站域名的信誉隔离开。
Loops:产品生命周期邮件优先
Loops 关注 SaaS 的 Product Email:用户注册后触发欢迎流程,试用即将结束时发送提醒,长期未活跃时进入召回流程。它通过事件和用户属性驱动工作流,适合把邮件和产品状态连接起来。
推荐的事件模型类似这样:
| 事件 | 触发邮件 |
|---|---|
user_signed_up | 欢迎和上手引导 |
workspace_created | 创建第一个项目的提示 |
trial_started | 试用期开始和功能教育 |
trial_ending | 到期提醒和升级入口 |
subscription_canceled | 取消确认和反馈收集 |
user_inactive | 召回或产品更新 |
不要把邮件发送代码直接散落在业务接口里。后端只负责发出业务事件,邮件平台负责根据事件和用户属性决定发送流程,这样更容易改文案、调整节奏和做实验。
Amazon SES、SendGrid 和 Mailgun:事务邮件的三条路径
Amazon SES 适合已经使用 AWS、发送量较大且愿意自己管理模板、事件和投递策略的团队;SendGrid 提供 API、SMTP、模板、联系人和营销能力,适合希望在一个成熟产品里兼顾工程与运营的团队;Mailgun 更偏开发者邮件 API、路由和验证能力。
这三者都能发送事务邮件,但使用体验不同:SES 更像基础设施,SendGrid 更像完整邮件产品,Mailgun 更像开发者 API。上线前应比较域名验证、退信事件、模板管理、数据保留和团队协作,而不是只看发送单价。
Customer.io:行为触发和生命周期自动化
Customer.io 适合把产品事件、用户属性、分群和多步骤旅程连接起来。它比简单的欢迎邮件工具更重,但当产品需要试用转化、激活、召回、通知和多渠道触达时,可以与 Loops、Brevo 放在同一层比较。
Brevo:营销和多渠道触达
Brevo 同时提供 Email、SMS、WhatsApp、联系人、事件和营销 API。它适合希望在控制台里管理联系人和营销活动,又需要用 API 发送事务邮件的团队。
如果只是给后端发送几封系统邮件,Brevo 的功能可能显得多;如果产品需要 Newsletter、营销联系人、自动化流程和多渠道触达,它会更有价值。
Klaviyo 和 Mailchimp:营销系统而非简单 SMTP
Klaviyo 更适合电商和以行为事件、分群、收入归因为核心的营销自动化。Mailchimp 更适合 Newsletter、联系人管理、活动模板和营销运营。
两者都不应该成为密码重置、登录验证码等关键事务邮件的唯一依赖。事务邮件应使用专门 API 或独立发送域名,避免营销名单、批量发送和退订规则影响系统邮件。
事务邮件和营销邮件要分开
至少在数据模型里区分:
| 项目 | 事务邮件 | 营销邮件 |
|---|---|---|
| 触发 | 用户或系统动作 | 活动、分群或营销计划 |
| 退订 | 某些类型不能直接退订 | 必须支持退订和偏好管理 |
| 模板 | 变量、语言和产品状态 | 品牌、内容和活动组件 |
| 失败处理 | 需要告警和重试 | 记录活动结果即可 |
| 域名 | 建议独立子域名 | 另一个发送子域名更安全 |
例如:notify.example.com 用于事务邮件,news.example.com 用于营销邮件。具体命名不重要,重要的是发送信誉和退订逻辑不要互相污染。
邮件域名和送达率
上线前要完成:
- SPF:声明哪些服务器可以代替域名发送邮件;
- DKIM:对邮件签名,让收件方验证来源;
- DMARC:定义验证失败时的处理策略并接收报告;
- From、Reply-To 和 Return-Path 的规划;
- 退信、投诉和硬退信地址的处理;
- 逐步升量,不要新域名第一天就大量群发。
邮件平台能提供发送基础设施,但不能替你保证内容质量。垃圾词、低互动、未经同意的联系人和大量投诉,都会损害域名信誉。
怎么选
| 情况 | 推荐 |
|---|---|
| 只发登录、支付和系统通知 | Resend 或 Postmark |
| 已经在 AWS,发送量大且愿意自己搭邮件层 | Amazon SES |
| 需要成熟 API、模板和营销能力 | SendGrid |
| 需要开发者 API、路由或邮件验证 | Mailgun |
| 需要欢迎、试用、召回等产品流程 | Loops |
| 需要复杂事件分群和生命周期旅程 | Customer.io 或 Loops |
| 需要联系人、营销活动和多渠道消息 | Brevo |
| 电商行为分群和收入归因 | Klaviyo |
| Newsletter 和传统营销运营 | Mailchimp |
| 既要事务邮件又要营销邮件 | 分离发送域名,必要时使用两类服务 |
代码和平台解耦
应用代码最好只暴露统一接口,例如:
await mailer.sendTemplate("trial-ending", {
to: user.email,
locale: user.locale,
variables: { daysLeft: 3 },
});
模板名称、用户语言、幂等键和业务事件由应用管理,具体供应商 SDK 放在 mailer 适配层里。以后从 Resend 迁移到 Brevo,或者把产品邮件交给 Loops,不需要修改所有业务接口。
结语
海外 SaaS MVP 的邮件组合通常是:Resend 负责事务邮件,Loops 或 Brevo 负责产品和营销邮件。先把域名认证、退订、事件模型和失败监控做好,比单纯比较每月能发多少封邮件更重要。