Cloudflare Email
用 Cloudflare 账号内的 Email Routing 发信
最近更新 2026 年 11 月 3 日
Cloudflare Email 走你 Cloudflare 账号内的邮件路由发信,不依赖第三方服务商账号。 前置条件:域名已托管在这个 Cloudflare 账号下,账号已开通 Email Routing。
步骤
- 开通 Email Routing。 在 Dashboard 的 Email → Email Routing 里启用该功能,并添加一个
已验证的收件地址(用于收信与路由规则的落点)。
- 配 MX 记录。 按 Dashboard 提示把域名的 MX 指向 Cloudflare 的路由服务器:
| 记录 | 值 |
|---|---|
根域 MX | route1.mx.cloudflare.net(按 Dashboard 给出的完整列表) |
根域 TXT | v=spf1 include:_spf.mx.cloudflare.net ~all |
| DKIM | cf2024-1._domainkey 的 TXT(Email Routing 开启时自动添加) |
Email Routing 只收不发:转发出去的邮件无法以原地址回复,要用接收方账号回信。
- 声明 `EMAIL` binding。 在
wrangler.jsonc里加send_email绑定,绑定名必须是EMAIL
——代码按这个名字读:
``jsonc title="wrangler.jsonc" "send_email": [ { "name": "EMAIL", "destination_address": "<your-verified-address>" } ] ``
模板里这段是注释掉的,示例值 REPLACE_ME 不是合法投递地址,启用前要换成真实地址。 destination_address 限定这个 binding 只能发往哪个已验证地址;不限定就填实际要发的地址。
- 填发件地址。
MAIL_FROM优先,缺失时才回退到CLOUDFLARE_EMAIL_SENDER:
``bash MAIL_FROM=noreply@<your-domain.com> ``
两个变量都不加 `VITE_` 前缀。MAIL_FROM 必须是纯邮箱地址,不接受带显示名的写法。
- 切换 provider 并部署。 在
src/config/website.ts里:
``ts mail: { enabled: true, provider: 'cloudflare', supportEmail: '<your-support-email>' }, ``
然后把运行时 secret 交给 Worker 并部署:
``bash pnpm exec wrangler secret put MAIL_FROM pnpm deploy ``
与 Resend 的差别
走账号内的路由,不绑第三方服务商、不用买发信额度;代价是域名必须在 Cloudflare 上,且受账号 的收件地址验证限制。
验证
pnpm run check:envmail 一项不再报缺配置即可;绑定是否存在由 pnpm check 列为部署核对项。随后触发一次注册或 联系表单,确认邮件真的送达。
pnpm email:dev在 3001 端口预览 src/mail/templates/ 下的模板。
注意事项
- Cloudflare Email binding 只能发往已验证的收件地址,部署前先核对账号的收件限制。
MAIL_FROM与CLOUDFLARE_EMAIL_SENDER只在provider为cloudflare时才会被回退使用。