Jerbix

Cloudflare Email

用 Cloudflare 账号内的 Email Routing 发信

最近更新 2026 年 11 月 3 日


Cloudflare Email 走你 Cloudflare 账号内的邮件路由发信,不依赖第三方服务商账号。 前置条件:域名已托管在这个 Cloudflare 账号下,账号已开通 Email Routing。

步骤

  1. 开通 Email Routing。 在 Dashboard 的 Email → Email Routing 里启用该功能,并添加一个

已验证的收件地址(用于收信与路由规则的落点)。

  1. 配 MX 记录。 按 Dashboard 提示把域名的 MX 指向 Cloudflare 的路由服务器:
记录值
根域 MXroute1.mx.cloudflare.net(按 Dashboard 给出的完整列表)
根域 TXTv=spf1 include:_spf.mx.cloudflare.net ~all
DKIMcf2024-1._domainkey 的 TXT(Email Routing 开启时自动添加)

Email Routing 只收不发:转发出去的邮件无法以原地址回复,要用接收方账号回信。

  1. 声明 `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 只能发往哪个已验证地址;不限定就填实际要发的地址。

  1. 填发件地址。 MAIL_FROM 优先,缺失时才回退到 CLOUDFLARE_EMAIL_SENDER:

``bash MAIL_FROM=noreply@<your-domain.com> ``

两个变量都不加 `VITE_` 前缀。MAIL_FROM 必须是纯邮箱地址,不接受带显示名的写法。

  1. 切换 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 上,且受账号 的收件地址验证限制。

验证

bash
pnpm run check:env

mail 一项不再报缺配置即可;绑定是否存在由 pnpm check 列为部署核对项。随后触发一次注册或 联系表单,确认邮件真的送达。

bash
pnpm email:dev

在 3001 端口预览 src/mail/templates/ 下的模板。

注意事项

  • Cloudflare Email binding 只能发往已验证的收件地址,部署前先核对账号的收件限制。
  • MAIL_FROM 与 CLOUDFLARE_EMAIL_SENDER 只在 provider 为 cloudflare 时才会被回退使用。

配置好后可以接着做 邮件总览里的联系表单,或 邮件订阅。