Site icon image Lainbo's Blog

一个自言自语的地方,希望能帮到你

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

遇到的问题

我一直在用 Cloudflare Email Routing 将域名邮箱转发到 Gmail,方便管理多个邮箱地址。配置很简单,用起来也挺好——直到我发现了一个严重的问题:

丢!邮!件!

很多正规平台的邮件都收不到了:

  • npm 的验证码
  • 银行(HSBC)的通知
  • 甚至 Apple 的邮件

一开始我以为是 Cloudflare 转发失败,但检查后发现 Cloudflare 显示「成功转发」,Gmail 的「所有邮件」里也找不到。最后才发现它们全在垃圾邮件箱里!

更离谱的是,Gmail 莫名其妙把这些正规商家的邮件全标记成了 Spam(垃圾邮件)。

为什么会这样?

经过研究发现,这是使用 Cloudflare Email Routing + Gmail 转发方案的通病:

  1. SPF/DKIM 验证问题:邮件经过 Cloudflare 转发后,原始发件人的验证信息可能不完整,Gmail 会觉得可疑
  2. 第三方转发的信誉问题:Gmail 对经过中转的邮件更加谨慎,特别是金融类邮件
  3. 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
  1. 在 Telegram 中搜索 @BotFather 并打开对话
  2. 发送 /newbot 创建新 Bot
  3. 按提示输入:
    • Bot 显示名称(例如:My Mail Bot
    • Bot 用户名(必须以 bot 结尾,例如:mymail123_bot
  4. 创建成功后,BotFather 会给你一个 Token,类似这样:
    7123456780:AAjkLAbvSgDdfsDdfsaSK0_example

    把这个 Token 保存好,后面要用

  5. 获取你的 Telegram ID:
    • 搜索 @userinfobot 并发送 /start
    • 它会返回你的 ID(一串数字,例如:123456789
    • 保存这个 ID
第二步:安装工具

打开终端(Mac)或命令提示符(Windows),执行:

# 安装 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
  1. 登录 Cloudflare Dashboard
  2. 点击右上角头像 → 我的个人资料
  3. 左侧菜单选择 API 令牌
  4. 点击 创建令牌
  5. 找到 编辑 Cloudflare Workers 模板,点击 使用模板
  6. 权限配置(通常已预设好):
    • 账户 - Cloudflare Workers Scripts - 编辑
    • 账户 - Cloudflare Workers KV Storage - 编辑
  7. 账户资源选择 所有账户
  8. 点击 继续以显示摘要创建令牌
  9. 复制并保存这个 Token(只会显示一次!)
配置 Token

Mac/Linux 用户:

编辑你的 shell 配置文件(~/.zshrc~/.bashrc),添加:

export CLOUDFLARE_API_TOKEN="你的_API_Token"

保存后执行:

source ~/.zshrc  # 或 source ~/.bashrc

Windows 用户:

  1. 搜索并打开「环境变量」设置
  2. 在「用户变量」中点击「新建」
  3. 变量名:CLOUDFLARE_API_TOKEN
  4. 变量值:你的 API Token
  5. 确定保存
  6. 重新打开命令提示符

验证:

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
配置项目
  1. 复制配置模板:
    cp wrangler.example.jsonc wrangler.jsonc
  2. 编辑 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 小程序的必需步骤:

  1. 在 Telegram 找到 @BotFather
  2. 发送 /mybots
  3. 选择你的 Bot
  4. 选择 Edit BotEdit Privacy Policy
  5. 输入:https://telegram.org/privacy-tpa
第九步:配置 Cloudflare Email Routing
启用 Email Routing
  1. 登录 Cloudflare Dashboard
  2. 选择你的域名
  3. 左侧菜单:电子邮件电子邮件路由
  4. 点击 启用电子邮件路由
  5. 按提示添加 DNS 记录(Cloudflare 会自动处理)
配置 Catch-all 规则
  1. 在 Email Routing 页面,点击 路由规则 标签
  2. 找到 全部地址(Catch-all address)
  3. 点击 编辑
  4. 操作 选择:发送到 Worker
  5. Worker 下拉框选择:mail2telegram
  6. 保存
第十步:测试
  1. 从任意邮箱发送测试邮件到:test@你的域名.com
  2. 打开 Telegram,应该会收到 Bot 发来的消息,包含:
    • 邮件标题
    • 发件人
    • 收件人
    • 四个按钮:PreviewSummaryTextHTML
  3. 点击按钮可以:
    • Preview:直接在 Telegram 预览纯文本内容
    • Summary:AI 生成邮件摘要(需配置 AI)
    • Text:网页查看纯文本
    • HTML:网页查看富文本格式

成功!🎉

推荐配置

添加邮件备份

邮件并不是持久的存在Cloudflare的,如果你按着上面的配置,邮件将会在72小时后缓存失效(之前配置的MAIL_TTL字段),再也无法看到,所以强烈建议同时备份到自己的邮箱中:

编辑 wrangler.jsonc,添加:

"FORWARD_LIST": "[email protected]"

记得在 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,但你能清楚地知道是哪个地址收到的。

安全注意事项
  1. 邮件缓存时间:72 小时后,邮件预览链接会失效,如果不设置则是默认24小时,我上面设置了259200的缓存秒数,所以是72小时(可通过 MAIL_TTL 调整)
  2. HTML 模式:查看 HTML 邮件时可能包含跟踪脚本,建议只在确认安全时使用
  3. 备份重要邮件:建议设置 FORWARD_LIST 备份到其他邮箱

🎯 总结

使用 mail2telegram 后,我再也没遇到过重要邮件被误判为垃圾邮件的问题。Telegram 的通知也比 Gmail 更及时,查看邮件更方便。

唯一的小缺点是不支持附件预览,但对于大多数验证码、通知类邮件来说完全够用了。如果需要处理附件,可以配合 FORWARD_LIST 同时转发到其他邮箱。

如果你也被 Gmail 的垃圾邮件过滤困扰,强烈推荐试试这个方案!


项目地址https://github.com/TBXark/mail2telegram