域名邮箱转到Gmail被丢垃圾邮件?来试试用Telegram Bot接收域名邮件吧

遇到的问题
我一直在用 Cloudflare Email Routing 将域名邮箱转发到 Gmail,方便管理多个邮箱地址。配置很简单,用起来也挺好——直到我发现了一个严重的问题:
丢!邮!件!
很多正规平台的邮件都收不到了:
一开始我以为是 Cloudflare 转发失败,但检查后发现 Cloudflare 显示「成功转发」,Gmail 的「所有邮件」里也找不到。最后才发现 它们全在垃圾邮件箱里!
更离谱的是,Gmail 莫名其妙把这些正规商家的邮件全标记成了 Spam(垃圾邮件)。
为什么会这样?
经过研究发现,这是使用 Cloudflare Email Routing + Gmail 转发方案的通病:
-
SPF/DKIM 验证问题:邮件经过 Cloudflare 转发后,原始发件人的验证信息可能不完整,Gmail 会觉得可疑
-
第三方转发的信誉问题:Gmail 对经过中转的邮件更加谨慎,特别是金融类邮件
-
Catch-all 带来的问题:接收所有邮件意味着可能混入真正的垃圾邮件,降低了地址的信誉评分
虽然可以手动标记「不是垃圾邮件」来训练 Gmail,但治标不治本——谁知道下次重要邮件会不会又被吞掉?
解决方案:mail2telegram
在 X 上看到有人推荐了一个项目: mail2telegram
这个方案的思路很简单:
-
邮件不转发到 Gmail,而是通过 Cloudflare Workers 直接发送到 Telegram Bot
-
在 Telegram 里查看邮件,支持纯文本和 HTML 格式
-
还能用 AI 生成邮件摘要
-
完全免费(利用 Cloudflare 和 Telegram 的免费额度)
最重要的是:不经过 Gmail,就不会有垃圾邮件问题!
部署教程
准备工作
你需要:
-
✅ Node.js、yarn@1
-
✅ 一个 Telegram 账号
-
✅ 一个 Cloudflare 账号
-
✅ 一个在 Cloudflare 托管的域名
第一步:创建 Telegram Bot
-
在 Telegram 中搜索
@BotFather并打开对话 -
发送
/newbot创建新 Bot -
按提示输入:
-
Bot 显示名称(例如:
My Mail Bot) -
Bot 用户名(必须以
bot结尾,例如:mymail123_bot)
- 创建成功后,BotFather 会给你一个 Token,类似这样:
7123456780:AAjkLAbvSgDdfsDdfsaSK0_example
```
**把这个 Token 保存好**,后面要用
1. 获取你的 Telegram ID:
- 搜索 `@userinfobot` 并发送 `/start`
- 它会返回你的 ID(一串数字,例如: `123456789`)
- **保存这个 ID**
##### 第二步:安装工具
打开终端(Mac)或命令提示符(Windows),执行:
```plain text
# 安装 Yarn 1.x(这个项目需要 Yarn 1)
npm install -g yarn@1
# 安装 Cloudflare Workers CLI
npm install -g wrangler
# 验证安装
yarn -v # 应显示 1.22.x
wrangler -v # 应显示 4.x.x 或更高第三步:登录 Cloudflare
打开终端,执行:
wrangler login这会自动打开浏览器,要求你授权。点击「允许」即可完成登录。
验证登录成功:
wrangler whoami如果显示你的邮箱信息,说明登录成功!
❓ 遇到问题?如果你的环境无法打开浏览器 (比如使用远程服务器),可以使用 API Token 方式:
点击展开:使用 API Token 登录的方法
创建 API Token
-
点击右上角头像 → 我的个人资料
-
左侧菜单选择 API 令牌
-
点击 创建令牌
-
找到 编辑 Cloudflare Workers 模板,点击 使用模板
-
权限配置(通常已预设好):
- 账户 - Cloudflare Workers Scripts - 编辑
- 账户 - Cloudflare Workers KV Storage - 编辑
-
账户资源选择 所有账户
-
点击 继续以显示摘要 → 创建令牌
-
复制并保存这个 Token (只会显示一次!)
配置 Token
Mac/Linux 用户:
编辑你的 shell 配置文件( ~/.zshrc 或 ~/.bashrc),添加:
export CLOUDFLARE_API_TOKEN="你的_API_Token"保存后执行:
source ~/.zshrc # 或 source ~/.bashrcWindows 用户:
-
搜索并打开「环境变量」设置
-
在「用户变量」中点击「新建」
-
变量名:
CLOUDFLARE_API_TOKEN -
变量值:你的 API Token
-
确定保存
-
重新打开命令提示符
验证:
wrangler whoami第四步:创建 KV 数据库
在终端执行:
wrangler kv namespace create "DB"会返回类似这样的结果:
✨ Success!
Add the following to your configuration file:
{ binding = "DB", id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }把这个 **id** 保存下来,待会要用。
第五步:下载并配置项目
下载项目
选择一个你喜欢的目录,执行:
git clone https://github.com/TBXark/mail2telegram.git
cd mail2telegram如果没有 git,可以直接从 GitHub 页面 下载 ZIP 并解压。
安装依赖
yarn install配置项目
- 复制配置模板:
cp wrangler.example.jsonc wrangler.jsonc
```
1. 编辑 `wrangler.jsonc` 文件,填入以下信息:
{
"name": "mail2telegram",
"main": "src/index.ts",
"compatibility_date": "2024-01-01",
"kv_namespaces": [
{
"binding": "DB",
"id": "你的_KV_ID" // ← 第四步获取的 ID
}
],
"vars": {
"TELEGRAM_ID": "你的_Telegram_ID", // ← 第一步获取
"TELEGRAM_TOKEN": "你的_Bot_Token", // ← 第一步获取
"DOMAIN": "", // ← 先留空
"MAIL_TTL": "259200", // ← 邮件缓存保留时间(秒)。过期后邮件将无法预览,如果需要保存,务必填写上面的FORWARD_LIST的值为自己的真实邮箱
}
}
```保存文件。
第六步:部署 Worker
wrangler deploy部署成功后,会显示你的 Worker 地址:
https://mail2telegram.你的用户名.workers.dev记下这个地址!
更新 DOMAIN 配置
编辑 wrangler.jsonc,把 DOMAIN 改成刚才的地址( 不带 https://):
"DOMAIN": "mail2telegram.你的用户名.workers.dev"保存后重新部署:
wrangler deploy第七步:绑定 Telegram Webhook
在浏览器中访问: https://mail2telegram.你的用户名.workers.dev/init
如果看到这样的返回,说明成功:
{"ok":true,"result":true,"description":"Webhook was set"}第八步:设置 Bot 隐私政策
这是使用 Telegram 小程序的必需步骤:
-
在 Telegram 找到
@BotFather -
发送
/mybots -
选择你的 Bot
-
选择 Edit Bot → Edit Privacy Policy
-
输入:
https://telegram.org/privacy-tpa
第九步:配置 Cloudflare Email Routing
启用 Email Routing
-
选择你的域名
-
左侧菜单: 电子邮件 → 电子邮件路由
-
点击 启用电子邮件路由
-
按提示添加 DNS 记录(Cloudflare 会自动处理)
配置 Catch-all 规则
-
在 Email Routing 页面,点击 路由规则 标签
-
找到 全部地址 (Catch-all address)
-
点击 编辑
-
操作 选择: 发送到 Worker
-
Worker 下拉框选择:
mail2telegram -
保存
第十步:测试
-
从任意邮箱发送测试邮件到:
test@你的域名.com -
打开 Telegram,应该会收到 Bot 发来的消息,包含:
- 邮件标题
- 发件人
- 收件人
- 四个按钮: Preview、 Summary、 Text、 HTML
- 点击按钮可以:
-
Preview:直接在 Telegram 预览纯文本内容
- Summary:AI 生成邮件摘要(需配置 AI)
-
Text:网页查看纯文本
- HTML:网页查看富文本格式
成功!🎉
推荐配置
添加邮件备份
邮件并 不是持久的存在Cloudflare的,如果你按着上面的配置,邮件将会在72小时后缓存失效(之前配置的 MAIL_TTL 字段),再也无法看到,所以 强烈建议 同时备份到自己的邮箱中:
编辑 wrangler.jsonc,添加:
"FORWARD_LIST": "your_backup@gmail.com"记得在 Cloudflare Email Routing 的「目标地址」中 添加并验证这个邮箱。
启用 AI 摘要
我这里使用OpenRouter的Claude Haiku 4.5作为总结模型
编辑 wrangler.jsonc,添加:
"OPENAI_API_KEY": "你的AI供应商的Key",
"OPENAI_CHAT_MODEL": "anthropic/claude-haiku-4.5",
"SUMMARY_TARGET_LANG": "chinese"
"OPENAI_COMPLETIONS_API": "https://openrouter.ai/api/v1/chat/completions",并在 wrangler.jsonc 添加 AI 绑定:
"ai": {
"binding": "AI"
}每次修改完配置后,保存文件,执行以下命令重新部署,让配置生效
wrangler deploy管理黑白名单
在 Bot 中发送任意消息,会看到一个小程序入口,可以:
-
管理黑名单(屏蔽特定发件人)
-
管理白名单(只接收特定发件人)
-
测试地址是否会被拦截
无限邮箱地址
你可以用不同的邮箱地址注册不同服务:
-
amazon@你的域名.com- 用于亚马逊 -
netflix@你的域名.com- 用于 Netflix -
work@你的域名.com- 用于工作
所有邮件都会发到同一个 Telegram Bot,但你能清楚地知道是哪个地址收到的。
安全注意事项
-
邮件缓存时间:72 小时后,邮件预览链接会失效,如果不设置则是默认24小时,我上面设置了259200的缓存秒数,所以是72小时(可通过
MAIL_TTL调整) -
HTML 模式:查看 HTML 邮件时可能包含跟踪脚本,建议只在确认安全时使用
-
备份重要邮件:建议设置
FORWARD_LIST备份到其他邮箱
🎯 总结
使用 mail2telegram 后,我再也没遇到过重要邮件被误判为垃圾邮件的问题。Telegram 的通知也比 Gmail 更及时,查看邮件更方便。
唯一的小缺点是不支持附件预览,但对于大多数验证码、通知类邮件来说完全够用了。如果需要处理附件,可以配合 FORWARD_LIST 同时转发到其他邮箱。
如果你也被 Gmail 的垃圾邮件过滤困扰,强烈推荐试试这个方案!
项目地址: https://github.com/TBXark/mail2telegram
原文地址: https://lainbo.dev/posts/domain-email-to-telegram-bot/