本文记录使用 cloudflare_temp_email 搭建临时邮箱的过程。整体思路是:域名接入 Cloudflare,使用 D1 存邮件数据,Workers 作为后端接口与邮件处理入口,Email Routing 把收件流量转给 Worker,最后用 Cloudflare Pages 部署前端页面。
参考资料:
部署前准备
开始前需要准备:
- 一个 Cloudflare 账号。
- 一个已接入 Cloudflare 的域名。
- 一个用于访问前端的域名,例如
mail.example.com。 - 一个用于 Worker 后端接口的域名,例如
email-api.example.com。
如果只是个人使用,Cloudflare 免费计划基本够用。国内访问时建议给 Worker 绑定自定义域名,因为 workers.dev 域名可能无法正常访问。
注册并托管域名
这里使用 dnshe 注册免费域名。

注册完成后,进入 Cloudflare 添加站点,并把域名托管到 Cloudflare。

选择连接已有域名。

输入刚注册好的域名。

套餐选择免费计划即可。

继续前往激活流程。

Cloudflare 会给出两条名称服务器地址,需要复制下来。

回到域名注册商后台,把原来的 DNS 服务器替换成 Cloudflare 提供的名称服务器。

替换完成后,回到 Cloudflare 点击确认。

等待 Cloudflare 检测生效。看到域名处于可用状态后,再继续后面的部署。

创建 D1 数据库
进入 Cloudflare 控制台,打开 Storage & Databases,选择 D1 SQL Database,然后创建数据库。

输入数据库名称后创建。

创建完成后进入数据库的 Console,按官方文档复制 db/schema.sql 中的 SQL 内容并执行,用来初始化表结构。

执行成功后,D1 数据库就准备好了。

部署 Workers 后端
进入 Compute (Workers),打开 Workers & Pages,创建一个新的 Worker。

选择 Worker 模板并创建。

设置 Worker 名称。建议后端服务名与后续域名保持一致,例如 email-api。

配置运行时
部署项目脚本前,先在 Worker 的 Settings -> Runtime 中添加兼容标记 nodejs_compat。如果没有开启这个标记,部署或访问时可能出现缺少 Node 模块的错误。

确认运行时配置已保存。

上传 Worker 脚本
下载项目发布页中的 worker.js,进入 Worker 的代码编辑页面,替换默认脚本并部署。

设置变量和机密
进入 Settings -> Variables and Secrets,按项目文档添加变量。常用配置如下:
DOMAINS:可用于临时邮箱的域名,JSON 数组格式,例如["example.com"]。DEFAULT_DOMAINS:普通用户默认可选的域名,个人部署时通常和DOMAINS保持一致。JWT_SECRET:用于登录和鉴权的随机密钥,建议作为 Secret 保存。ADMIN_PASSWORDS:管理后台密码,JSON 数组格式,例如["your-password"]。ENABLE_USER_CREATE_EMAIL:是否允许用户创建邮箱,按需设置为true。ENABLE_USER_DELETE_EMAIL:是否允许用户删除邮件,按需设置为true。PREFIX:新建邮箱地址的默认前缀,不需要可以不填。DISABLE_ANONYMOUS_USER_CREATE_EMAIL:是否关闭匿名用户创建邮件,若不想未注册用户创建邮件,可以设置为true。
注意:在 Cloudflare 控制台填写字符串变量时,最外层通常不需要额外加引号;JSON 数组和对象则要保持合法 JSON 格式。


绑定 D1 数据库
进入 Settings -> Bindings,添加 D1 数据库绑定。

选择前面创建的 D1 数据库。绑定名称必须填写为 DB,并且是大写。

绑定后端访问域名
进入 Settings -> Triggers,为 Worker 添加自定义域名。

这里建议使用单独的后端接口域名,例如 email-api.example.com。

保存后访问 https://email-api.example.com/health_check。如果页面返回 OK,说明 Worker 后端部署成功。

也可以访问下面两个地址做进一步验证:
https://email-api.example.com/health_check:返回OK表示后端健康。https://email-api.example.com/open_api/settings:返回 JSON 表示前端初始化依赖的公开配置正常。
创建并绑定 KV 缓存
如果需要启用用户注册、验证码或部分缓存能力,需要创建 KV 命名空间。不需要这些能力时可以先跳过。

回到 Worker 的 Settings -> Bindings 添加 KV 绑定。绑定名称必须填写为 KV,并且是大写。

确认添加绑定。

配置邮件转发
临时邮箱能否收到邮件,关键在 Cloudflare Email Routing。进入域名的 Email Routing,先启用邮件路由,并按提示添加 Cloudflare 要求的邮件 DNS 记录。
然后添加路由规则。

选择需要接收邮件的域名。

在路由规则中配置 Catch-all 地址,把所有邮件转发到前面部署好的 Worker。

最后启用规则。

完成后,可以给当前域名随机发送一封邮件,观察前端是否能收到。如果收不到,优先检查 Email Routing 是否完成 DNS 记录配置,以及 Catch-all 是否指向正确的 Worker。
配置 Pages 前端
进入项目文档提供的前端生成页面,填写 Worker 后端 API 根地址。这里填写的是后端接口域名,例如 https://email-api.example.com,不要填写 Pages 前端域名,也不要带 /admin、/api 或末尾 /。

生成前端代码并下载压缩包。

进入 Workers & Pages 创建 Pages 项目,选择直接上传,把生成的压缩包上传部署。部署时建议把未找到处理设置为 Single-page application (SPA),避免刷新 /admin 等页面时报 404。
部署完成后,为 Pages 添加自定义访问域名,例如 mail.example.com。

验证部署
部署完成后按下面顺序检查:
- 打开
https://email-api.example.com/health_check,确认返回OK。 - 打开
https://email-api.example.com/open_api/settings,确认返回 JSON。 - 打开
https://mail.example.com,确认前端页面能正常加载。 - 创建一个临时邮箱地址,并向该地址发送测试邮件。
- 如果使用管理后台,进入
/admin验证管理员密码和数据库连接。
如果前端报 Network Error、map 相关错误或接口返回 405,通常是前端生成时填错了后端 API 地址,或者 Worker 的 D1 绑定、变量配置不完整。优先检查 DB 绑定名、DOMAINS 变量、Email Routing 和 /open_api/settings 返回结果。