SuperAPI AI 工具集

cloudflare-email-routing

部署与运维

查看项目

更新于 10-15 12:34

技能介绍

用途

Cloudflare Email Routing 用于通过 Cloudflare Workers 接收和发送电子邮件,主要覆盖两类场景:

  • Email Workers:接收并处理来信,可实现白名单、转发、解析等逻辑。
  • Send Email:从 Workers 向已验证的地址发送邮件。

两项能力均免费,并可组合使用以完成完整的邮件功能。

主要能力

  • 接收邮件:在 Worker 的 email 处理器中获取 message.from、message.to、message.headers、message.raw、message.rawSize,并调用 message.forward(address) 转发或 message.setReject(reason) 拒收。
  • 解析邮件:使用 postal-mime 解析原始邮件,得到 email.from、email.to、email.subject、email.text、email.html、email.attachments、email.headers。
  • 发送邮件:使用 mimetext 构造 MIME 消息,通过 EmailMessage 与 send_email 绑定发送。
  • 常见模式:白名单、黑名单、自动回复、附件解析、按主题自定义路由。
  • 典型用例:支持工单系统(写入数据库并回执)、邮件通知(如注册欢迎邮件)、带过滤的邮件转发。

使用方式

  1. 启用 Email Routing:在仪表盘进入 Domain → Email → Email Routing,启用并添加记录;创建目标地址(如 hello@yourdomain.com 转发到你的邮箱)并通过邮件验证。
  2. 接收邮件(Email Workers):安装依赖 bun add postal-mime@2.5.0 mimetext@3.0.27;编写 src/email.ts,使用 PostalMime 解析并转发;在 wrangler.jsonc 中设置 compatibility_date(需 >= 2024-09-23)并添加 compatibility_flags: ["nodejs_compat"];执行 bunx wrangler deploy 部署,然后在仪表盘 Email Workers 中创建地址并选择该 Worker。
  3. 发送邮件:在 wrangler.jsonc 中添加 send_email 绑定(含 name 与 destination_address);在 Worker 中用 createMimeMessage 设置发件人、收件人、主题与正文,构造 EmailMessage 后通过 env.SES.send(message) 发送。

关键规则

应当:为 postal-mime 启用 nodejs_compat(compatibility_date >= 2024-09-23);发送前验证目标地址;用 postal-mime 解析内容;用 mimetext 创建邮件;通过 message.from 做白名单;使用 message.forward() 转发;处理错误;用真实邮件测试;通过仪表盘自动添加 MX 记录;记录邮件活动以便调试。

不应:跳过 nodejs_compat;未验证就发送;在公开代码中硬编码邮箱地址;跳过解析;忽略垃圾邮件;超过 Gmail 每日 500 封限制;跳过错误处理;手动修改 DNS;在日志中暴露邮件内容(PII);假设即时送达(邮件是异步的)。

常见错误防范

  • “Email Trigger not available”:启用 compatibility_flags: ["nodejs_compat"](compatibility_date >= 2024-09-23)。
  • 目标地址未验证:验证所有发送目标。
  • Gmail 速率限制:发往 Gmail 每日最多 500 封。
  • SPF permerror:使用仪表盘配置 DNS。
  • Worker 调用失败:检查日志中的解析错误。

适用场景与限制

适用于需要在 Cloudflare Workers 中接收、解析、过滤、转发或发送邮件的场景,例如工单系统、通知邮件、带过滤的转发。限制方面:发送目标地址必须验证;发往 Gmail 有每日 500 封上限;邮件为异步送达;DNS 应通过仪表盘配置而非手动修改;日志中不应暴露邮件内容。

配套资源

参考资料(references/):setup-guide.md(完整设置流程)、common-errors.md(8 个已记录错误及解决方案)、dns-setup.md(MX、SPF、DKIM 配置)、local-development.md(本地测试与开发模式)。

模板(templates/):receive-basic.ts、receive-allowlist.ts、receive-blocklist.ts、receive-reply.ts、send-basic.ts、send-notification.ts、wrangler-email.jsonc。

官方文档:

  • Email Routing:https://developers.cloudflare.com/email-routing/
  • Email Workers:https://developers.cloudflare.com/email-routing/email-workers/
  • Send Email:https://developers.cloudflare.com/email-routing/email-workers/send-email-workers/