用途
Email Gateway(多提供商)用于在 Cloudflare Workers 和 Node.js 应用中构建事务性邮件系统。它整合了多个邮件服务商的发送能力,让开发者可以按需选择提供商,或在不同场景中切换使用。项目状态为 Production Ready,最后更新时间为 2026-01-10。
主要能力
- 支持四家邮件服务商:Resend、SendGrid、Mailgun、SMTP2Go。
- Resend 原生支持 React Email(JSX 模板)。
- SendGrid、Mailgun、SMTP2Go 支持动态模板。
- 四家均支持 Webhooks 事件追踪。
- 四家均支持 SMTP。
- 支持批量发送、附件发送、计划发送(Resend 的 scheduledAt)等能力。
- 提供各服务商的 TypeScript 类型定义。
各提供商定位(据资料)
| Provider |
Best For |
Key Feature |
Free Tier |
| Resend |
Modern apps, React Email |
JSX templates |
100/day, 3k/month |
| SendGrid |
Enterprise scale |
Dynamic templates |
100/day forever |
| Mailgun |
Developer webhooks |
Event tracking |
100/day |
| SMTP2Go |
Reliable relay, AU |
Simple API |
1k/month trial |
使用方式
环境变量配置
# Resend
RESEND_API_KEY=re_xxxxxxxxx
# SendGrid
SENDGRID_API_KEY=SG.xxxxxxxxx
# Mailgun
MAILGUN_API_KEY=xxxxxxxx-xxxxxxxx-xxxxxxxx
MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_REGION=us # or eu
# SMTP2Go
SMTP2GO_API_KEY=api-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Cloudflare Workers 使用 Wrangler Secrets
# Set secrets
echo "re_xxxxxxxxx" | npx wrangler secret put RESEND_API_KEY
echo "SG.xxxxxxxxx" | npx wrangler secret put SENDGRID_API_KEY
echo "xxxxxxxx-xxxxxxxx-xxxxxxxx" | npx wrangler secret put MAILGUN_API_KEY
echo "api-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" | npx wrangler secret put SMTP2GO_API_KEY
# Deploy to activate
npx wrangler deploy
调用示例(Resend)
const response = await fetch('https://api.resend.com/emails', {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.RESEND_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: 'noreply@yourdomain.com',
to: 'user@example.com',
subject: 'Welcome!',
html: '<h1>Hello World</h1>',
}),
});
const data = await response.json();
// { id: "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794" }
其余服务商的调用方式见资料中的 SendGrid、Mailgun、SMTP2Go 部分。
常见模式
资料提供了多类常见模式的代码示例:
- 事务性邮件(如密码重置),包含按 provider 分支调用的完整实现。
- 批量发送,例如 Resend 按 50 个收件人分块、SendGrid 使用最多 1000 个 personalizations。
- React Email 模板(仅 Resend),需安装:
npm install react-email @react-email/components
- 动态模板(SendGrid、Mailgun)。
- 附件发送(Resend、SendGrid、Mailgun)。
- Webhooks 事件追踪(如 Resend 的签名校验与 email.bounced 处理)。
提供商能力对比(据资料)
| Feature |
Resend |
SendGrid |
Mailgun |
SMTP2Go |
| React Email |
✅ Native |
❌ |
❌ |
❌ |
| Dynamic Templates |
✅ |
✅ |
✅ |
✅ |
| Batch Sending |
50/request |
1000/request |
1000/request |
100/request |
| Webhooks |
✅ |
✅ |
✅ |
✅ |
| SMTP |
✅ |
✅ |
✅ |
✅ Primary |
| IP Warmup |
Managed |
Manual |
Manual |
Managed |
| Dedicated IPs |
Enterprise |
$90+/mo |
$80+/mo |
Custom |
| Analytics |
Basic |
Advanced |
Advanced |
Good |
| A/B Testing |
❌ |
✅ |
✅ |
❌ |
免费额度与速率限制(据资料)
| Provider |
Daily |
Monthly |
Overage Cost |
| Resend |
100 |
3,000 |
$1/1k |
| SendGrid |
100 |
Forever |
$15 for 10k |
| Mailgun |
100 |
Forever |
$15 for 10k |
| SMTP2Go |
~33 |
1,000 trial |
$10 for 10k |
消息限制(据资料)
| Provider |
Max Size |
Attachments |
Max Recipients |
| Resend |
40 MB |
40 MB total |
50/request |
| SendGrid |
20 MB |
20 MB total |
1000/request |
| Mailgun |
25 MB |
25 MB total |
1000/request |
| SMTP2Go |
50 MB |
50 MB total |
100/request |
适用场景
- 需要在 Cloudflare Workers 或 Node.js 中发送事务性邮件(如密码重置、欢迎邮件)。
- 需要在多个邮件服务商之间选择或切换。
- 需要使用 React Email 或动态模板构建邮件内容。
- 需要批量发送、附件发送或通过 Webhook 追踪邮件事件。
限制
- React Email 仅 Resend 原生支持。
- A/B Testing 仅 SendGrid 与 Mailgun 支持。
- 各服务商的免费额度、速率限制、消息大小、收件人上限不同,需按上表核对。
- 其他未在资料中明确说明的功能或限制暂未提供。