使用 Cloudflare Email Service(邮件发送 + 邮件路由)发送和接收事务性邮件,适用于构建邮件发送功能(Workers 绑定或 REST API)
Cloudflare 电子邮件服务是一项面向实际任务的技能,主要用于您对 Cloudflare 电子邮件服务、 电子邮件寻路或电子邮件发送的了解可能已经过时;您在任何 Cloudflare 电子邮件服务预训中优先检索。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
您对 Cloudflare 邮件服务、邮件路由(Email Routing)或邮件发送(Email Sending)的认知可能已过时。对于任何 Cloudflare 邮件服务任务,请优先采用检索方式,而非依赖预训练知识。
Cloudflare 邮件服务允许您在 Cloudflare 平台内直接发送事务性邮件并路由传入邮件。您对该产品的了解可能已滞后——该服务于 2025 年正式发布,且正处于快速迭代演进中。对于任何邮件服务相关任务,请始终优先检索最新信息,而非依赖预训练知识。
若本技能文档与下方原始资料存在任何不一致之处,请一律以原始资料为准。 Cloudflare 官方文档、REST API 规范、@cloudflare/workers-types 包以及 Agents SDK 代码仓库为唯一权威来源。本技能文档仅为便捷参考指南,其内容可能滞后于最新变更。如有疑问,请务必从下方来源检索,并严格依据其内容执行。
| 来源 | 检索方式 | 适用场景 |
|---|---|---|
| Cloudflare 文档 | 使用 cloudflare-docs 搜索工具,或访问 URL:https://developers.cloudflare.com/email-service/ |
API 参考、配额限制、定价信息、最新功能 |
| REST API 规范 | https://developers.cloudflare.com/api/resources/email_sending |
邮件发送 REST API 的 OpenAPI 规范 |
| Workers 类型定义 | https://www.npmjs.com/package/@cloudflare/workers-types |
类型签名、绑定结构(binding shapes) |
| Agents SDK 文档 | 从 https://github.com/cloudflare/agents/tree/main/docs 获取 docs/email.md |
Agents SDK 中的邮件处理逻辑 |
在编写任何邮件相关代码前,请确认基础配置已就绪:
npx wrangler email sending list 查看哪些域名已启用邮件发送功能。若目标域名未出现在列表中,请运行 npx wrangler email sending enable userdomain.com,或参阅 cli-and-mcp.md 获取完整配置说明。wrangler.jsonc(适用于 Workers)中查找 send_email 配置项。postal-mime? 运行 npm ls postal-mime(仅在接收/解析邮件时需要)。请从此处开始。定位您的具体使用场景,然后点击对应链接查看详细说明。
| 我想…… | 实现路径 | 参考文档 |
|---|---|---|
| 从 Cloudflare Worker 发送邮件 | Workers 绑定(无需 API 密钥) | sending.md |
| 从基于 Cloudflare Agents SDK 构建的 AI Agent 发送邮件 | Agent 类中的 onEmail() + replyToEmail() |
sending.md |
| 从外部应用或 Agent 发送邮件(Node.js、Go、Python 等) | 带 Bearer Token 的 REST API | rest-api.md |
| 从编程辅助 Agent 发送邮件(如 Claude Code、Cursor、Copilot 等) | MCP 工具、wrangler CLI 或 REST API | cli-and-mcp.md |
| 接收并处理传入邮件(邮件路由,Email Routing) | Workers 的 email() 处理器 |
routing.md |
| 配置邮件发送(Email Sending)或邮件路由(Email Routing) | wrangler email sending enable / wrangler email routing enable 命令,或通过 Dashboard 配置 |
cli-and-mcp.md |
| 提升投递率,避免进入垃圾邮件文件夹 | 身份验证、邮件内容、合规性要求 | deliverability.md |
将绑定配置添加至 wrangler.jsonc,随后调用 env.EMAIL.send()。其中 from 字段所用域名必须已通过 npx wrangler email sending enable yourdomain.com 完成接入。
// wrangler.jsonc
{ "send_email": [{ "name": "EMAIL" }] }
const response = await env.EMAIL.send({
to: "user@example.com",
from: { email: "welcome@yourdomain.com", name: "My App" },
subject: "Welcome!",
html: "Welcome!
",
text: "Welcome!",
});
推荐在 Workers 中使用绑定方式——无需管理 API 密钥。若用户明确要求在 Worker 内使用 REST API(例如其已有基于 API Token 的工作流),该方式同样可行——详见 rest-api.md。
完整 API 接口说明、批量发送、附件支持、自定义请求头、受限绑定(restricted bindings)以及 Agents SDK 集成等内容,请参阅 sending.md。
适用于非 Workers 环境的应用,或用户明确要求在 Workers 中使用 REST API 的场景。相较于 Workers 绑定方式,主要差异如下:
POST https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/sendfrom 对象中使用 address 字段(而非 email):{ "address": "...", "name": "..." }replyTo 字段在 REST API 中为 reply_to(蛇形命名){ delivered: [], permanent_bounces: [], queued: [] }(而非 messageId)关于 curl 示例、响应格式及错误处理,请参阅 rest-api.md。
| 错误 | 发生原因 | 修复方法 |
|---|---|---|
遗漏 send_email 绑定配置(wrangler.jsonc 中) |
邮件服务使用绑定机制,而非 API 密钥 | 在 wrangler.jsonc 中添加 "send_email": [{ "name": "EMAIL" }] |
| 从未经验证的域名发送邮件 | 域名必须先完成邮件发送服务接入,方可首次发信 | 运行 wrangler email sending enable yourdomain.com,或在 Dashboard 中完成接入 |
在邮件处理器中重复读取 message.raw |
原始流(raw stream)为单次可读;第二次读取将返回空内容 | 首次读取时缓存: const raw = await new Response(message.raw).arrayBuffer() |
缺失 text 字段(仅提供 HTML 版本) |
部分邮件客户端仅显示纯文本;同时有助于改善反垃圾邮件评分 | 务必同时提供 html 和 text 两个版本 |
| 将邮件服务用于营销/群发场景 | 邮件服务仅限事务性邮件用途 | 请使用专用的营销邮件平台处理新闻简报与推广活动 |
| 转发至未经验证的目标地址 | message.forward() 仅支持已验证地址 |
运行 wrangler email routing addresses create user@gmail.com,或在 Dashboard 中添加 |
| 使用无效邮箱地址进行测试 | 向不存在的地址发送导致的退信会损害发件人信誉 | 开发阶段请使用您实际控制的真实邮箱地址 |
| 在源码中硬编码 API Token | 代码中明文存储 Token 易被提交至代码仓库并泄露 | 请改用环境变量或 Cloudflare Secrets |
忽略 from 域名的强制要求 |
from 地址必须使用已接入邮件服务的域名 |
请先验证域名,再从 anything@that-domain.com 发送邮件 |
在 REST API 的 from 对象中误用 email 键 |
REST API 中 from 对象使用 address 字段,而非 email |
REST API 使用 { "address": "...", "name": "..." };Workers 绑定使用 { "email": "...", "name": "..." } |
在 REST API 中使用 replyTo |
REST API 字段名统一采用蛇形命名(snake_case) | REST API 使用 reply_to;Workers 绑定使用 replyTo |
请根据您的实际场景选择对应参考文档阅读,无需全部查阅。
email() 处理器、邮件转发、自动回复、内容解析。适用于接收邮件场景。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章