🎬 2026 终极教程:Cloudflare 免费搭建专属域名邮箱(发信+收信+TG推送)
🎬 2025 终极教程:Cloudflare 免费搭建专属域名邮箱(发信+收信+TG推送)
📋 0. 准备工作 (Preparation)
- 账号:Cloudflare 账号、Telegram 账号、Resend.com 账号。
- 域名:一个已经托管在 Cloudflare 上的域名(例如
900900.xyz)。 - 工具:电脑文本编辑器(推荐 VS Code,或电脑自带的记事本)。
🏗️ 第一部分:数据库与存储 (D1 & KV)
1. 创建 D1 数据库
- 登录 Cloudflare 仪表盘,点击左侧菜单 Storage & Databases (存储和数据库) -> D1 SQL Database (D1 SQL 数据库)。
- 点击 Create (创建)。
- 数据库名称自己随便填写一个,如填
vmail-db,点击 Create (创建)。
2. 初始化数据库 (官方源码引用)
我们需要给数据库建立表结构。
- 获取代码:
此部分内容受密码保护
请输入密码查看隐藏内容
- 替换代码:
- 用记事本打开下载好的
worker.js,全选并复制所有内容。 - 回到 刚刚创建的 Worker 页面,点击右上角 Edit code (编辑代码)。
- 在左侧文件列表点击
worker.js。 - 删除 编辑器里原本的所有代码。
- 粘贴 你刚才复制的新代码。
- 点击右上角 Deploy (部署)。
🔄 以后如何更新后端?
不需要删除 Worker 重建。只需去上面的链接下载最新的worker.js,重复“编辑代码 -> 全选覆盖 -> 部署”的步骤即可无缝升级。
3. 设置运行环境 (Runtime)
- 进入你刚刚创建的worker页面,点击打开顶部右侧的 Settings (设置) 标签。
- 列表找到 Runtime (运行时)。
- 选择 Compatibility flags (兼容性标志),点击右侧的编辑笔图标,弹出Add compatibility flag (添加兼容性标志)。
- 输入
nodejs_compat,点击 Save (保存)。
4. 绑定数据库 (Bindings)和kv存储
绑定 KV Namespace
- 在 Worker 编辑页面顶部,点击 Bindings (绑定) 标签。
- 点击Add binding(添加绑定)
- 绑定 KV namespace
- 点击 Add binding (添加绑定) -> KV Namespace (KV 命名空间)。
- Variable name (变量名) 填
KV(必须大写)。 - Namespace (命名空间) 选之前创建的空间
vmail-kv。 - 填写好点Add Binding
绑定 D1 database
- 在 Worker 编辑页面顶部,点击 Bindings (绑定) 标签。
- 点击Add binding(添加绑定)
- 绑定 D1 Database
- 点击 Add binding (添加绑定) -> D1 Database (D1 数据库)。
- Variable name (变量名) 填
DB(必须大写)。 - D1 database (D1 数据库) 选之前创建的数据库
vmail-db。 - 填写好点Add Binding
5. 配置环境变量 (Variables)
点击 Settings (设置) -> Variables & Secrets (变量和机密) -> Add variable (添加变量)。
全部添加好点击保存部署就行了。
⚠️ 请严格按照下表选择类型 (Type) 并填写:
| 变量名 (Name) | 值 (Value) 示例 | 类型 (Type) | 说明 |
|---|---|---|---|
DOMAINS |
["900900.xyz"] |
JSON | 你的域名,可以多个域名,英文逗号分隔 |
ADMIN_PASSWORDS |
["123456"] |
JSON | 后台密码,要有引号和方括号 |
JWT_SECRET |
随便填一串乱码 |
Text (文本) | 登录加密密钥 |
ENABLE_AUTO_REPLY |
true |
Text (文本) | 开启自动回复 |
ENABLE_USER_CREATE_EMAIL |
true |
Text (文本) | 允许用户创建邮箱 |
ENABLE_USER_DELETE_EMAIL |
true |
Text (文本) | 允许删除邮件 |
NO_LIMIT_SEND_ROLE |
admin |
Text (文本) | 无限制发信角色 |
*注意:发信变量RESEND_TOKEN 和 tg机器人变量TELEGRAM_BOT_TOKEN 我们留到后面章节专门填。
这个域名变量DOMAINS的值必须是根域名或者你托管到cloudflare的二级免费域名,填错无法收信。配置收信与发信看第四部分。
6. 绑定后端域名
- 点击 Settings (设置) -> Routes and domains (路由和域名)。
- 点击右侧 Add (添加) -> Custom Domain (自定义域名)。
- 输入一个二级域名,例如
mail.9009000.xyz。 - 点击 Add Custom Domain (添加)。
- ⚠️ 重要:请拿小本本记下这个域名,下一步前端配置要用!
🎨 第三部分:前端 Pages 部署 (界面)
这里提供两种方法,小白推荐方法一,进阶推荐方法二。
此部分内容受密码保护
请输入密码查看隐藏内容
🤖 第五部分:Telegram 机器人 (手机收信)
⚠️ 重要说明:关于邮件解析
Telegram 的聊天气泡不支持复杂的 HTML 邮件(如验证码、推广邮件)。
如果你收到邮件时提示:“解析失败,请打开 mini app 查看”,这是正常现象。
请点击聊天框底部的 “打开邮箱” 按钮,在小程序里可以完美查看邮件原文。
1. 申请机器人 (保姆级对话)
打开 Telegram,搜索 @BotFather。
⚠️ 注意:请认准名字后面带蓝色对勾 ✅ 的才是官方机器人,其他的都是假的!
(请严格照着下面的剧本操作)
- 点击 Start,发送指令:
```text
/newbot
2. **BotFather 回复**:
"Alright, a new bot. How are we going to call it?..."
*(好,取个名字吧。)*
3. **你发送** (机器人的显示名称,可用中文):
```text
我的专属邮箱
- BotFather 回复:
“Good. Now let’s choose a username… It must end inbot…”
(好,现在取个唯一 ID,必须以 bot 结尾。) - 你发送 (唯一 ID,必须英文+数字,不能重复):
```text
vmail_900900_bot
*(如果提示 Username is already taken,就换个复杂的,比如 `my_vip_mail_999_bot`)*
6. **BotFather 回复**:
"Done! Congratulations..."
*(恭喜!...)*
**👉 复制那串红色的 Token** (例如 `7123...:AAF...`)。
### 2. 配置后端变量 (双语指引)
1. 回到 Cloudflare `vmail-worker` -> **Settings (设置)** -> **Variables & Secrets (变量和机密)**。
2. 点击 **Add variable (添加变量)**。
3. **Variable name (变量名)**: 输入 `TELEGRAM_BOT_TOKEN`。
4. **Value (值)**: 粘贴刚才复制的 Token。
5. **Type (类型)**: 选择 **Secret (机密)**。
6. 点击 **Encrypt (加密)**。
7. 点击 **Deploy (部署)** 或 **Save (保存)**。
### 3. 激活机器人 (Webhook)
Worker 无法主动连接 TG,必须手动激活一次。
请在浏览器地址栏输入以下网址并回车(**替换成你的 Token 和 后端域名**):
```text
https://api.telegram.org/bot<你的Token>/setWebhook?url=https://<你的后端域名>/telegram/webhook
示例:`https://api.telegram.org/bot7123:AAF.../setWebhook?url=https://mail.900900.xyz/telegram/webhook`
看到网页显示 {"ok":true, ... "description":"Webhook was set"} 即代表激活成功。
4. 配置小程序按钮 (强烈推荐)
✅ 结尾:验收成果
- 网页测试:访问
bb.9009000.xyz,复制右上角的邮箱地址。 - 发信测试:用 QQ 邮箱给它发一封信。
- TG 推送测试:
- 在 Telegram 对机器人发送
/new,生成一个新地址。 - 给这个新地址发信。
- 手机应该会震动并推送消息。
- 如果提示“解析失败”,点击左下角 “打开邮箱” 按钮查看详情。
🎉 恭喜!你现在拥有了一个永久免费、无限续杯的专属域名邮箱系统!
