服务商可能接受你的月发送量,却在结账故障后限制突发流量。将发送合约与你的应用需要恢复的工作量进行对比。
如果需要事务性发送并配合邮箱的会话与回复功能,请选择 Bird。如果是围绕 sesv2 发送命令构建的 AWS 应用,Amazon SES 更为合适。
什么是事务性邮件?
事务性邮件服务于收件人的交易或账户活动,例如收据或密码重置。邮件的用途决定其类别。收件人数量和自动触发不会使促销内容变成事务性邮件。
应该评估哪些方面?
比较应用所需的能力,然后在正式使用前测试故障路径。
- 送达率与信誉管理工具。 能否方便地使用 SPF、DKIM 和 DMARC 对域名进行认证?如果需要专用 IP,是否可用,并提供预热指导?
- API 和 SDK 质量。 API 文档是否完善,是否提供你所用语言的官方 SDK?
- SMTP 和 HTTP 兼备。 检查你的运行时支持哪种提交接口。现有的 SMTP 客户端可以使用中继;HTTP API 适用于提交结构化请求的应用。
- 模板。 服务端模板支持变量替换,让你无需部署即可修改文案,并保持各消息格式一致。
- Webhooks 和事件。 投递、打开、点击、退信和投诉的实时 webhook 事件是保持自有记录准确并触发后续逻辑的关键。
- 分析。 投递率、退信率和互动率的汇总视图,以及可搜索的日志,用于排查单条消息。
- 屏蔽处理。 服务商应自动屏蔽硬退信和投诉地址,使应用停止向这些地址发送。了解屏蔽列表如何管理,以及你能否查看它们。
- 可扩展性。 在流量高峰(产品发布、节假日激增)时,能否无需人工干预或意外限流就处理峰值量?
- 定价。 了解计费模式(按条、分级、包含量)以及超额的起算点。按你的预期发送量和峰值时段计算费用。
- 支持。 凌晨两点邮件停发时,如何联系到真人,响应速度如何?检查你实际要购买的套餐所附带的支持等级。
- 合规性。 在签约前确认服务商满足你的业务所需的数据处理和区域性要求。
何时应选择 SMTP 中继服务?
如果应用已经自行构建邮件消息并支持可配置的邮件服务器,选择 SMTP 中继。如果需要结构化请求字段或存储模板,选择 HTTP API。
对于 Bird,在选择接口之前先比较提交和恢复路径:
| 决策或故障场景 | SMTP 中继 | HTTP 邮件 API |
|---|---|---|
| 认证 | 用户名 bird,API 密钥作为密码,使用 emails 范围。在区域 SMTP 主机上使用 TLS。 | API 密钥放在 Authorization: Bearer 请求头中,使用 emails 范围。 |
| 提交响应 | 最终的 250 包含已入队的消息 ID。将其与应用事件一起保存。 | 202 包含已接受的消息 ID。将其与应用事件一起保存。 |
| 重试职责 | 你的应用或 SMTP 客户端负责提交重试。对同一逻辑消息复用 X-Bird-Idempotency-Key。 | 你的应用或 SDK 负责提交重试。对同一逻辑消息复用 Idempotency-Key。 |
| 过期 | 重试未发送的任务前,应用需检查其链接或验证码是否仍然有效。 | 提交另一个请求前执行同样的检查。 |
| 吞吐量假设 | 并发连接数限制与发送配额需分开检查。更多的打开连接并不等同于发送速率配额。 | 使用响应中的速率限制请求头控制 API 请求节奏。请求速率与收件人量是不同的指标。 |
| 事件证据 | 在入队响应后跟踪收件人事件。Bird 会重试延迟投递。 | 在接受响应后跟踪相同的收件人事件。Bird 会重试延迟投递。 |
| IP 池选择 | API 密钥的 SMTP 配置决定 IP 池。未配置的密钥使用组织的默认池。 | 按每次发送设置 ip_pool_id,或使用组织的默认池。 |
SMTP 中继指南提供连接设置和响应处理说明。HTTP 发送参考定义了 API 的请求和响应。两种接口使用相同的邮件管线,包括屏蔽处理和签名。
传输接受表示 Bird 已将消息入队。之后的 email.delivered 事件表示接收服务器已接受该消息。两者都不等同于进入收件箱或被阅读。
在幂等保留窗口之后仍需保留你自己的发送记录,因为后续重试可能创建另一条消息。延迟投递已由 Bird 重试中;再次发送会导致仍在处理中的工作重复。
两种接口都可以选择使用专用 IP。在通过专用池发送突发流量之前,请查看 IP 池和预热要求。
应该比较哪些公开的能力?
检查每项功能背后的文档化接口。接收解析后的邮件、存储其内容以及公开会话 API 是不同的能力。
| 服务商 | 提交方式 | 收件人证据 | 收发基础设施 |
|---|---|---|---|
| Bird | HTTP 发送和 SMTP | 事件、消息日志和屏蔽列表 | 邮箱和会话;专用 IP 池 |
| Amazon SES | SendEmail API 和 SMTP | 事件目标和账户屏蔽列表 | 支持区域中的接收规则;标准或托管专用 IP |
| SendGrid | Mail Send API 和 SMTP | Event Webhook 和 Email Activity | Inbound Parse webhook;IP 池 |
| Mailgun | Messages API 和 SMTP | 投递事件和退信记录 | 转发或存储邮件的路由;IP 池 |
| Postmark | Email API 和 SMTP | Webhooks 和流屏蔽列表 | 入站 webhook;专用 IP 资格 |
| Resend | Email API 和 SMTP | Webhook 事件和 API 日志 | 接收的内容和回复;托管专用 IP |
确认你要购买的套餐的资格和保留策略。功能链接并不等同于吞吐量配额或恢复时间承诺。
对于存储的内容,检查哪些正文、请求头、附件和事件记录仍可检索。对于数据驻留,获取已公开的存储和处理范围(包括例外情况)。仅有区域端点并不构成该合同。
月发送量达到一千万时会有什么变化?
峰值流量和恢复能力决定了所需的发送速率。仅凭月发送量无法确定。
在一个示例性的 30 天月份中,一千万条单收件人消息平均约每秒 3.86 条。10 分钟内突发 100,000 条消息需要约每秒 167 条。需将突发量与月度配额分开评估。
在每秒 100 条新消息的速率下中断 10 分钟后,应用积压了 60,000 个未发送任务。如果新任务继续以每秒 100 条的速率到达,要在 20 分钟内消化积压,还需额外每秒 50 条。因此恢复目标是每秒 150 条被接受的消息,尚未计入重试或接收服务器延迟。
检查各服务商如何计算工作量。SES 配额按收件人计数,并按区域分别适用。它们包含滚动每日配额和接受速率。SES 还提示实际接受速率可能低于账户的最大速率。
Resend 限额区分 API 请求速率和邮件量配额。Bird 的速率限制请求头报告有效的请求配额。在与场景中的收件人速率做比较之前,先将你的批量大小换算为请求数。
应如何测试故障恢复?
测试提交失败或 webhook 处理程序不可用后应用的恢复方式。服务商的状态页提供故障上下文;你的消息记录确定哪些工作尚未完成。
| 服务商 | 已公布的限额或错误合约 | 官方状态 |
|---|---|---|
| Bird | 有效配额和重试请求头 | Bird 状态 |
| Amazon SES | 发送配额 | AWS 服务健康状况 |
| SendGrid | API 速率限制 | SendGrid 状态 |
| Mailgun | API 错误和速率限制合约 | Mailgun 状态 |
| Postmark | API 响应和错误合约 | Postmark 状态 |
| Resend | 用量限制 | Resend 状态 |
暂停测试 worker,累积任务,然后在账户有效限额内恢复。测量最老的合格任务等待了多长时间。已过期的重置任务需要走重新请求的路径,而非自动重放。
在恢复过程中保留每个业务事件标识符。在重试不确定的提交之前,核实服务商的防重复发送合约。Postmark 未提供幂等键功能,因此其集成需要应用层的保障措施。Bird 的已完成响应保留时长为三小时。超出该窗口的恢复需要你自己的事件记录。
将后续收件人事件与已保存的消息 ID 匹配。接收服务器的接受并不等同于进入收件箱或被阅读。事务性 API 生命周期解释了这些不同的结果。
价格比较中应包含哪些内容?
针对你要购买的确切套餐、账单周期和币种,比较已公布的包含项。将发送量与其所需的基础设施和保留策略分开考虑。
| 服务商定价来源 | 针对你的工作负载需检查的包含项 |
|---|---|
| Bird 定价 | 发送配额、超额费用、专用基础设施、内容保留和支持 |
| Amazon SES 定价 | 出站和入站用量、数据费用、专用 IP 和可选功能 |
| SendGrid 定价 | 套餐量、超额费用、专用 IP 资格、活动记录保留和支持 |
| Mailgun 定价 | 发送量、日志和消息保留、专用 IP 和支持 |
| Postmark 定价 | 发送配额、额外量、保留选项和专用 IP 资格 |
| Resend 定价 | 发送和接收配额、超额费用、保留和专用 IP 资格 |
检查所标注的配额计算的是请求数、消息数还是收件人数。将套餐不包含的功能记录在旁,而非假设已包含。Bird 的服务商对比提供了各产品的独立对比。
常见问题
事务性邮件和营销邮件有什么区别?
事务性邮件服务于交易或账户活动。营销邮件用于推广或投递订阅内容。消息用途决定了两者的区分,即使两者都是自动发送的。
一个服务商能同时处理事务性邮件和营销邮件吗?
服务商可以同时支持两种工作流。需分别检查类别策略、经过认证的发送身份和 IP 池选择。共享基础设施仍可能使运营邮件受到营销流量带来的信誉问题的影响。
我需要专用 IP 吗?
一开始不需要。较低发送量下共享 IP 池即可满足需求,还省去了 IP 预热。当发送量足够大且稳定,能够维持自身信誉时,专用 IP 才有意义。选择一个允许你先用共享 IP、在数据支持时再切换到专用 IP 的服务商。
Bird 的定位
你可以通过 SMTP 或 HTTP API 提交邮件。发布模板以复用内容。订阅收件人事件。在邮件日志中查看单条消息。
IP 池的选择与消息类别分开。更改发送量时请遵循预热指南。使用运维检查清单测试去重处理和恢复。
应如何做出最终选择?
- 将文档化的接口和收件人控制能力与你的应用需求匹配。
- 确认峰值流量和积压恢复两方面的有效配额。
- 针对已保存的消息和业务事件记录测试故障处理。
- 比较你要购买的套餐的已公布包含项、保留策略和支持。