← 返回博客

邮件发送 API(2026):用 Rovela 做生产发信的指南

生产级邮件发送 API 需要什么:已验证域名、仅发送密钥、幂等、webhook、批量与硬上限,以及 Rovela 的 POST /emails 如何满足这些要求。

更新于 2026年11月10日
邮件发送 API(2026):用 Rovela 做生产发信的指南

对「邮件发送 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和身份认证入手。 现行套餐限额见定价。

本系列相关产品指南:

一次请求里的契约

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(下列均有文档):

  1. 在你自己的域名上做认证发信。 Dashboard 提供 SPF、DKIM、DMARC 和 return-path 的 DNS;未验证的 from 会 400。见已验证域名的 Email API。
  2. 只用于发送的凭证。 sending_access 只能把邮件入队——这是默认值,也是正确的生产发信 Key。full_access 用于读取和管理。Key 还可以限制在单个域名(身份认证)。
  3. 可安全重试。 Idempotency-Key,24 小时,256 字符(邮件 API 的幂等键)。
  4. 明确区分「已受理」和「已投递」。 200 表示已入队。GET /emails/:id / events 需要 full_access。Webhook 会推送 email.delivered、email.bounced 等(事务邮件 Webhook)。
  5. 个性化事务群发有独立批量接口。 POST /emails/batch,最多 100 封,不接受 template / topic_id(批量事务邮件 API)。
  6. 营销路径不是把事务接口循环一遍。 广播负责名单展开、抑制和 List-Unsubscribe(事务邮件与营销邮件)。
  7. 可以写进代码的硬上限。 每封 to+cc+bcc 不超过 50 人;额度按收件人计;超限返回 429(批量里每条单独计数)。
  8. 可选收件箱。 若有人必须阅读 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。