邮件发送 API(2026):用 Rovela 做生产发信的指南
生产级邮件发送 API 需要什么:已验证域名、仅发送密钥、幂等、webhook、批量与硬上限,以及 Rovela 的 POST /emails 如何满足这些要求。
对「邮件发送 API」应有的预期
人们搜 Email sending API,多半是想为软件找一条能上生产的发信之路:一个 URL、一把密钥、一段 JSON,以及可运维的投递闭环。Rovela 的答案是Email API——POST https://api.rovela.dev/emails——再加上生产里真正要用的周边:已验证域名、幂等、webhook、批量,以及(如果你需要)邮箱。
这篇是该搜索词背后的生产清单。它不是事务邮件 API里的定义,不是HTTP 邮件 API里的 HTTP 对 SMTP 协议介绍,也不是5 分钟发送第一封邮件。可以从Email API产品页、快速开始、发送邮件 API和身份认证入手。 现行套餐限额见定价。
本系列相关产品指南:
- 事务邮件 API
- HTTP 邮件 API
- 从 SMTP 迁到 Email API
- SaaS 应用的 Email API
- 用 curl 发送邮件
- 事务邮件 API + 托管邮箱
- 入站与出站 Email API
- 邮件通知 API
- Email API 集成
- 批量事务邮件 API
- 事务邮件 Webhook
- 简单的事务邮件 API
- 从应用发送事务邮件
- 已验证域名的 Email API
一次请求里的契约
curl -X POST https://api.rovela.dev/emails \
-H "Authorization: Bearer re_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@yourdomain.com>",
"to": "you@example.com",
"subject": "Hello from Rovela",
"html": "<p>It worked.</p>",
"text": "It worked."
}'
你需要:已验证的 from 域名、Authorization: Bearer re_…,以及 html、text 或 template 至少之一。响应是 message id。完整字段见发送邮件 API。没有官方 SDK(安装说明)。
生产级发送 API 必须包含什么
把下面当作选型与建设清单,再一一对到 Rovela(下列均有文档):
- 在你自己的域名上做认证发信。 Dashboard 提供 SPF、DKIM、DMARC 和 return-path 的 DNS;未验证的
from会400。见已验证域名的 Email API。 - 只用于发送的凭证。
sending_access只能把邮件入队——这是默认值,也是正确的生产发信 Key。full_access用于读取和管理。Key 还可以限制在单个域名(身份认证)。 - 可安全重试。
Idempotency-Key,24 小时,256 字符(邮件 API 的幂等键)。 - 明确区分「已受理」和「已投递」。
200表示已入队。GET /emails/:id/ events 需要full_access。Webhook 会推送email.delivered、email.bounced等(事务邮件 Webhook)。 - 个性化事务群发有独立批量接口。
POST /emails/batch,最多 100 封,不接受template/topic_id(批量事务邮件 API)。 - 营销路径不是把事务接口循环一遍。 广播负责名单展开、抑制和 List-Unsubscribe(事务邮件与营销邮件)。
- 可以写进代码的硬上限。 每封
to+cc+bcc不超过 50 人;额度按收件人计;超限返回429(批量里每条单独计数)。 - 可选收件箱。 若有人必须阅读
you@yourdomain.com,使用托管邮箱和邮箱 SMTP(事务邮件 API + 托管邮箱)。
按定价,自定义 return path(SPF 对齐)包含在 Pro 和 Enterprise,免费计划不含。不要假设有独立 IP 或官方 SDK——我们依据的产品页并未把它们列为功能。
与 SMTP、中继和自建栈的差别
若问题是「API 还是 SMTP?」,请读Email API 与 SMTP 对比,切换则看从 SMTP 迁到 Email API。若问题是「必须自己拼一套邮件平台吗?」,见简单的事务邮件 API和自建邮件服务器。Rovela 的邮箱 SMTP(mx.rovela.dev:465)面向邮箱,不是高并发应用中继(SMTP)。
最低限度的生产集成
步骤与Email API 集成相同,这里只保留最短版本:
- 验证域名,在服务端保存
sending_access,封装POST /emails。 - 按用户动作附加
Idempotency-Key。 - 为
email.bounced和email.complained注册 webhook,并校验签名(验证 Webhook 签名)。 - 只在接口适用时使用 batch 或
scheduled_at;不要发明一个客户端发信器。
const res = await fetch("https://api.rovela.dev/emails", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.ROVELA_API_KEY,
"Content-Type": "application/json",
"Idempotency-Key": `signup-verify:${userId}:${codeId}`,
},
body: JSON.stringify({
from: process.env.MAIL_FROM, // e.g. "Acme <no-reply@yourdomain.com>"
to: user.email,
subject: `Your Acme code: ${code}`,
html: `<p>Your verification code is <b>${code}</b>. It expires in 10 minutes.</p>`,
text: `Your verification code is ${code}. It expires in 10 minutes.`,
tags: { kind: "signup-otp", userId },
}),
});
if (!res.ok) {
const err = await res.json();
throw new Error(`Rovela ${res.status}: ${err.message}`);
}
const { id } = await res.json(); // accepted and queued — not yet delivered
FAQ
「邮件发送 API」和「事务邮件 API」是两回事吗? 在搜索里常常不是。在产品用语里,事务强调邮件为何存在(用户动作);发送 API 强调接口本身。Rovela 的发送 API 覆盖事务邮件,也提供用于营销的广播。
可以先用免费计划吗? 可以。免费计划含每月 100 封、1 个域名、完整 API、webhook、入站和 5 个邮箱,无需绑卡(定价,快速开始)。
从 Node、Python 或 curl 怎么发? 同一套 HTTP 契约:用 curl 发送邮件、从应用发送事务邮件,以及已有的语言指南。
对着契约实现,而不是绑死某一个库
用上面这些生产属性来选邮件发送 API,然后把 HTTP 契约实现一次。在 Rovela 上,这条契约就是 POST /emails、已验证域名,以及文档中的密钥、上限和 webhook。