API参考
发送邮件
Send transactional mail only from your verified custom domains over HTTPS — password resets, receipts, alerts, and similar event-driven messages. Not for newsletters or marketing bulk. One endpoint, domain-scoped API keys, delivery through AWS SES.
概述
DNS 验证完成后,在 账户 → 域名 → 您的域名 → API 中生成密钥。完整密钥仅显示一次,请妥善保管。同一域名面板中的可选 SMTP 凭据遵循相同的仅限事务性规则。
仅事务性邮件
Unbox HTTP API (POST /v1/email) and optional SMTP submission are for transactional mail only — messages tied to an account action, purchase, or operational event. They are not a newsletter or marketing broadcast service.
允许的使用
- 账户验证、密码重置和安全提醒
- 订单确认、收据、发货更新和付款通知
- 由特定用户或系统事件触发的通知
- 团队和工作空间消息(邀请、分配、内部提醒)
禁止的使用
- 新闻简报、促销活动或广播营销
- 冷启动外联或向购买、抓取或未获同意的列表发送邮件
- 联盟垃圾邮件、钓鱼或欺骗性内容
- 任何试图绕过收件人上限、速率限制或套餐配额的行为
速率和收件人限制
为了保护收件人和投递成功率,出站API和SMTP流量需遵守以下限制(此外还有您套餐的月出站配额)。该限制已在网页撰写器、HTTP API和SMTP提交中生效。网页撰写器在每封邮件收件人超过25人时会发出警告,并在超过50人时阻止发送。
| 限制 | 值 |
|---|---|
| 每封邮件的收件人数 | 最多50个(收件人+抄送+密送合计) |
| 每日独立收件人数 | 每个工作空间最多1,000个 |
| 发送请求速率 | 每个域名每分钟最多10次API或SMTP提交 |
| 套餐出站配额 | 您的订阅的月度发送限制仍然适用 |
这些规则是我们的可接受使用政策的一部分。自动执行已在网页编辑器、HTTP API和SMTP提交中生效。发送营销邮件、批量邮件或以其他方式滥用发送基础设施的账户可能会被限流、暂停或终止。
我们监控投递质量信号。持续超过3%的退信率或超过0.1%的投诉率可能触发临时发送暂停或人工审核。
身份验证
在每个请求中发送您的域名 API 密钥:
Authorization: Bearer ubk_live_xxxxxxxxxxxxxxxxxxxxxxxx或者,使用 X-Api-Key: ubk_live_…。密钥以哈希形式存储;可从域名仪表板撤销或轮换。
请求体
使用 PascalCase 字段名称的 JSON(From、To 等)。也接受 camelCase 别名。
| 字段 | 必填 | 描述 |
|---|---|---|
From | 是 | 发件人 — 密钥域名上的个人邮箱(主邮箱或别名)。共享队列不能作为有效发件人。 |
To | 是 | 收件人 — 字符串、逗号分隔字符串或数组 |
Subject | 是 | 主题行 |
TextBody | TextBody / HtmlBody 之一 | 纯文本正文 |
HtmlBody | TextBody / HtmlBody 之一 | HTML 正文 |
Cc | 否 | 抄送收件人 |
Bcc | 否 | 密送收件人 |
ReplyTo | 否 | 回复地址 |
Tag | 否 | 可选的元数据标签(随发送一起存储) |
示例
{
"From": "you@yourdomain.com",
"To": "user@example.com",
"Subject": "Welcome",
"TextBody": "Thanks for signing up.",
"HtmlBody": "<p>Thanks for signing up.</p>",
"ReplyTo": "you@yourdomain.com",
"Tag": "welcome"
}成功响应
HTTP 200 及 JSON:
{
"ErrorCode": 0,
"Message": "OK",
"MessageID": "0100018…-000000-…",
"SubmittedAt": "2026-06-23T12:00:00.000Z",
"To": "user@example.com"
}错误响应
错误返回 4xx(或意外故障时返回 500)及 JSON:
{
"ErrorCode": 300,
"Message": "TextBody or HtmlBody is required."
}| 错误代码 | 含义 |
|---|---|
0 | 成功 |
10 | 缺少 API 密钥 |
11 | 密钥无效或已撤销,或域名未通过发送验证 |
300 | 验证错误(缺少字段、JSON 无效等) |
403 | 发件地址不允许 — 必须是密钥域名上的个人邮箱 |
406 | SES 拒绝发送该消息 |
示例
将 you@yourdomain.com 替换为域名下的个人邮箱,并使用您自己的 API 密钥。
curl "https://api.unbox.im/v1/email" \
-H "Authorization: Bearer ubk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"From": "you@yourdomain.com",
"To": "user@example.com",
"Subject": "Welcome",
"TextBody": "Thanks for signing up.",
"HtmlBody": "<p>Thanks for signing up.</p>",
"ReplyTo": "you@yourdomain.com",
"Tag": "welcome"
}'快速入门
- 创建 Unbox 账户并添加您的自定义域名。
- 在 Domains 中完成所有 DNS 验证步骤。
- 打开 Domains → 您的域名 → API,生成一个域名密钥。
- 使用上述示例发送您的第一条消息。