Cloudflare 目前正在内测一项名为 Cloudflare Email Service (Email Sending) 的新功能。该测试版允许开发者直接在 Cloudflare Workers 中使用原生的 send_email 绑定来向外发送邮件,彻底免除了对第三方 API 密钥的依赖。

Cloudflare 会在后台直接接管并生成所需的 MX、SPF 和 DMARC 等 DNS 记录。它注重隐私,不在服务器端留存邮件正文,并且支持通过 Email Workers 编写 JavaScript/TypeScript 脚本,实现基于发件人、正文特征的复杂编程级过滤或自动回复。此外,自 2025 年下半年起,该服务在上游强制执行了严格的 SPF 和 DKIM 身份验证,以大幅拦截未经授权的转发伪造邮件。

  • 局限性: 这一更新仍然主要面向“编程式触发”或发送给预先人工验证过的内部邮箱,它目前并不是一个可以直接挂载到通用邮件客户端或作为标准 SMTP 中继使用的完整替代品。

如果希望在不依赖第三方 API 的情况下使用 Cloudflare 域名发信,通常的 workaround(替代方案)是将路由后的自定义邮箱绑定到个人 Gmail,利用 Gmail 自身的 SMTP 服务器配合 App Password 进行“使用其他地址发送 (Send mail as)”的伪装,但在邮件头中可能会暴露代发痕迹。

Cloudflare 的 Email Sending(邮件发送)功能是其开发者平台(Workers)的一项重大扩展。它改变了过去 Cloudflare 只能“转发”而不能“原生发信”的局限。

1. 用途是什么?

其核心用途是编程式发信。它不是为了让你在 Outlook 或 Gmail 客户端里写信,而是为了让你的代码能够发信。

  • 自动化通知: 比如你的服务器离线了、监控触发了阈值,Worker 脚本自动给你发邮件。
  • 验证码/注册确认: 用户在你的网页注册时,由 Worker 直接调用发送接口发送验证码。
  • 联系表单回复: 网站访客提交表单后,自动向访客发送确认函,或向管理员发送提醒。

2. 设计原理

其原理是将邮件发送功能作为 Worker Binding(资源绑定) 集成到 Serverless 环境中。

  • 身份校验: 你必须拥有该域名的管理权,并在 Cloudflare DNS 中配置好 SPF 和 DKIM 记录,以证明 Cloudflare 有权代表该域名发信。
  • API 驱动: 在代码中,你不再需要配置复杂的 SMTP 协议(握手、端口、认证),而是直接调用一个简单的 send_email 函数。
  • 无服务器架构: 邮件发送动作在边缘节点(Edge)触发,具备极低的延迟和高并发能力。

3. 是否依赖其他发件服务?

不再依赖。

  • 过去: 你可能需要在 Worker 里调用 SendGrid、Resend 或 Amazon SES 的 API。
  • 现在: Cloudflare 充当了“邮局”。只要你的域名在 Cloudflare 上,你就可以直接利用它的基础设施发信,无需再购买或配置第三方 SMTP 服务。

4. 作为个人发送通知的方法

这不仅可行,而且是目前最优雅、成本最低的个人通知方案之一:

  • 免费额度: 对于个人开发者,Cloudflare 提供了非常慷慨的免费额度。
  • 灵活性: 你可以结合 Cron Triggers(定时触发),每天定时给自己发送抓取的资讯汇总、天气提醒或资产变动通知。
  • 安全性: 由于它是基于代码逻辑触发的,你可以设置非常复杂的过滤规则,防止发信接口被滥用。

为了让你直观理解 Cloudflare 邮件发送 与 传统转发 的逻辑差异,以及如何配置发信流程,你可以通过下方的交互模拟器进行探索。

{"component":"LlmGeneratedComponent","props":{"height":"700px","prompt":"创建一个交互式的 'Cloudflare 邮件服务逻辑模拟器'。用户可以在 'Email Routing (转发)' 和 'Email Sending (发送)' 两个模式之间切换。 \n\n1. 模式切换:\n   - 路由模式:展示外部邮件进入 Cloudflare,经过 Worker 处理,最后转发到目标邮箱(如 Gmail)的过程。\n   - 发送模式:展示 Worker 内部代码触发,通过绑定(Binding)直接从自定义域名发信给外部用户的过程。\n\n2. 交互元素:\n   - DNS 配置检查:提供一个交互式按钮,点击可以显示/隐藏所需的 DNS 记录(SPF, DKIM, DMARC)的作用解释。\n   - 代码预览:根据选择的模式,显示一段伪代码。发送模式应显示 `env.SEB.send(email)` 的用法。\n   - 流程动画:点击 '执行' 按钮,显示一个小信封在节点间流动的动画。\n\n3. 数据状态:\n   - 初始模式:Email Sending。\n   - 发件人:[email protected]\n   - 收件人:[email protected]\n\n4. 布局要求:\n   - 顶部为模式切换开关。\n   - 中间为逻辑流程图(Source -> Worker -> Destination)。\n   - 底部展示对应的代码段和 DNS 安全配置状态。使用中文界面。","id":"im_97d99fb9c64280d0"}}