很多平台注册都要邮箱验证。常规邮箱前缀基本固定,想做测试、分流或者临时注册某些网站就很不方便。
方案结构
这套临时邮箱核心是 4 件事:
Worker:处理收信逻辑、邮箱生成、后台接口D1:存邮件和地址数据KV:存会话等短期状态Email Routing + 自定义域名:把*@你的域名的邮件路由到 Worker
前置准备
- 一个已托管在 Cloudflare 的域名(例如
mail.domain.com) - Cloudflare 账号有 Workers / D1 / Email Routing 权限
- 准备一个可用子域名专门给临时邮箱
- 建议提前规划两个子域名:
- 后端 Worker:
api.domain.com - 前端 Pages:
mail.domain.com
一、先在 Cloudflare 创建 D1 数据库
路径:Workers & Pages -> D1 SQL Database -> Create
- 数据库名称填
temp-mail(或你自己的名字) - 创建后进入该数据库详情页
- 打开
Console或Query页面 - 把项目里的 docs/schema.sql 内容复制进去执行
到这里数据库表就初始化好了。
二、部署邮箱服务后端
1) 新建 Worker
路径:Compute (Workers) -> Workers & Pages -> Create -> Worker -> Create Worker
- 先创建一个新的 Worker
- 命名后点击
Deploy
2) 设置兼容性标志
路径:Workers & Pages -> Worker -> Settings -> Runtime
- 在
Compatibility flags里手动新增:nodejs_compat Compatibility date设为不早于2024-09-23
3) 上传后端 worker.js 并部署
- 下载后端文件:https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/worker.js
- 回到路径:
Workers & Pages -> Worker -> Overview -> Edit Code - 删除默认文件
- 左侧点
Explorer,在文件列表区域右键 ->Upload,上传worker.js - 点右上角
Deploy
4) Variables and Secrets 里逐项加变量
路径:Workers & Pages -> Worker -> Settings -> Variables and Secrets
按“一个一个添加变量”的方式配置。
先配这一组最小可运行变量(推荐):
| 变量名 | 类型 | 示例值 | 说明 |
|---|---|---|---|
DOMAINS |
JSON | ["api.domain.com"] |
可用域名列表,支持多个 |
JWT_SECRET |
文本 | your_jwt_secret |
JWT 密钥,务必换成随机强密码 |
ADMIN_PASSWORDS |
JSON | ["your_password"] |
后台密码列表,至少配一个 |
ENABLE_USER_CREATE_EMAIL |
文本 | true |
允许用户创建地址 |
ENABLE_USER_DELETE_EMAIL |
文本 | true |
允许用户删除邮件 |
ENABLE_ADDRESS_PASSWORD |
文本 | true |
启用邮箱地址密码登录 |
常用扩展变量(按需加):
| 变量名 | 类型 | 示例值 | 说明 |
|---|---|---|---|
ADMIN_USER_ROLE |
文本 | admin |
管理员角色名 |
NO_LIMIT_SEND_ROLE |
文本 | admin |
无限发信角色 |
ENABLE_AUTO_REPLY |
文本 | false |
自动回复开关 |
DEFAULT_DOMAINS |
JSON | ["api.domain.com"] |
未登录用户默认可用域名 |
USER_ROLES |
JSON | 见下方示例 | 自定义角色与域名权限 |
可直接复制的变量值示例(避免格式报错):
DOMAINS=["api.domain.com"]
ADMIN_PASSWORDS=["your_password","your_password_two"]
DEFAULT_DOMAINS=["api.domain.com"]
USER_ROLES=[
{"domains":["api.domain.com"],"prefix":"","role":"vip"},
{"domains":["api.domain.com"],"prefix":"","role":"admin"}
]
注意:
- JSON 必须用英文双引号
",不要用中文引号。 DOMAINS、ADMIN_PASSWORDS、USER_ROLES都是 JSON,不是普通文本。
5) 绑定 D1
路径:Workers & Pages -> Worker -> Settings -> Bindings -> Add Binding
- Type 选
D1 Database - Variable name 必须是
DB - Database 选择你第一步创建的 D1
6) 绑定 KV
先创建:
路径:Storage & Databases -> KV -> Create Namespace
再绑定到 Worker:
路径:Workers & Pages -> Worker -> Settings -> Bindings -> Add Binding
- Type 选
KV Namespace - Variable name 必须是
KV - Namespace 选刚创建的命名空间
7) 配后端域名(Triggers)
路径:Workers & Pages -> Worker -> Settings -> Triggers
添加自定义域名(也可先用 *.workers.dev,但中国网络下不稳定)。
填写:api.domain.com(替换成你的后端域名)
验证是否成功:
- 打开 Worker 根地址,返回
OK - 打开
https://api.domain.com/health_check,返回OK
三、检查 DNS 代理状态
路径:Websites -> 你的域名 -> DNS
确认临时邮箱子域记录(A/CNAME)为 Proxied(橙云开启)
四、Email Routing
发给你子域名邮箱的邮件,需要在这里转发给 Worker 处理。
路径:Email -> Email Routing -> Routing rules -> Add catch-all address
按下面配置:
Destination/Action选择Send to Email Worker- 选择你刚部署的 Worker
- 保存并等待生效
如果你是首次启用 Email Routing,Cloudflare 会要求添加/确认 MX 相关记录,按面板提示补齐即可。
五、搭建前端服务
路径:Compute (Workers) -> Workers & Pages -> Create
- 选择
Pages - 选择
Use direct upload - 在官方文档前端页面里的生成器输入你后端 Worker 地址(不要带最后的
/),点击生成并下载 zip - 回到 Cloudflare Pages,点击
Create Pages - 填写项目名,上传刚下载的 zip,点击
Deploy - 部署完成后进入该 Pages 项目,点击
Custom Domain绑定前端域名(例如mail.domain.com)
前端生成器页面:https://temp-mail-docs.awsl.uk/zh/guide/ui/pages
如果你不想用在线生成器,也可以直接下载官方前端包再手动改后端地址:
- 前端 zip:https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/frontend.zip
- 解压后修改
index-*.js里默认后端地址为Worker 域名,再重新打包上传
注意:
*.workers.dev 在中国网络环境下经常不可用,后端建议绑定自定义域名后再填到前端生成器里。
六、验证是否跑通
- 打开前端域名首页,例如
https://mail.domain.com - 生成一个临时邮箱地址
- 从你常用邮箱给这个地址发一封测试邮件
- 回到页面看是否收到
- 打开
https://mail.domain.com/admin,用ADMIN_PASSWORDS里的密码登录后台确认数据状态
到这里,这套 Cloudflare 临时邮箱就算可用了。