基于Cloudflare单Worker应用和D1数据库的临时邮箱服务

先给出原作者的开源库地址:GitHub - oiov/vmail: 📫 只需一个域名部署临时邮箱到 Cloudflare Worker,使用 D1 保存数据,支持多域名后缀,密码找回,开放API接口。 · GitHub

原作者的代码是基于Cloudflare+turso数据库+Vercel前端的一个应用,部署复杂,但是这个临时邮箱界面很漂亮,很是喜欢,作者说基本不会再更新了,虽然页面写着未来可能支持D1,但是作者说不更新了,那就自己改代码上吧。

我修改后的代码: GitHub - gujiangjiang/vmail: 📫 An open source temporary email tool. 只需一个域名部署临时邮箱,支持多域名后缀,密码找回。 · GitHub

现在完全支持Github Action全自动部署到Cloudflare,域名做好邮件转发到vmail即可。

一些截图:

13 个赞

我也搭了个测试链接,可以体验一下(不保证可用,我只是用来测试)

https://vmail.a.2.4.b.0.d.0.0.1.0.a.2.ip6.arpa/

3 个赞

GitHub Action 自动部署教程

本项目已包含一个预先配置好的 GitHub Action 工作流文件 (.github/workflows/deploy.yml),可以帮助您自动将 vMail 应用部署到 Cloudflare Workers。

配置 GitHub Secrets

为了让 GitHub Actions 能够安全地访问您的 Cloudflare 和数据库账户,您需要将以下敏感信息配置为 GitHub 仓库的 Secrets。

前往您的 GitHub 仓库页面,点击 Settings → Secrets and variables → Actions,然后添加以下 Repository secrets:

Secret Name 说明 示例值
CF_API_TOKEN Cloudflare API Token,用于授权 Wrangler 操作。请确保该 Token 具有编辑 Workers 和 D1 数据库的权限。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CF_ACCOUNT_ID 您的 Cloudflare 账户 ID,可以在 Cloudflare 控制台主页的右侧找到。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
D1_DATABASE_ID 您的 D1 数据库 ID。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
D1_DATABASE_NAME 您的 D1 数据库名称。 vmail
EMAIL_DOMAIN 您的邮箱域名,如果多个域名请用逗号隔开。 vmail.dev,example.com
COOKIES_SECRET 用于加密 Cookie 的密钥,请设置为一个随机且足够复杂的字符串。 a-very-strong-and-random-secret
TURNSTILE_KEY Cloudflare Turnstile 网站密钥 (Site Key)。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TURNSTILE_SECRET Cloudflare Turnstile 密钥 (Secret Key)。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

触发自动部署

配置好以上 Secrets 后,每当您向 main 分支推送(push)代码时,GitHub Action 都会自动触发,执行以下步骤:

  1. 检查凭据:确认 CF_API_TOKEN 和 CF_ACCOUNT_ID 是否已设置。
  2. 安装与构建:安装 pnpm 依赖并构建前端和 Worker 应用。
  3. 数据库迁移:自动应用 worker/drizzle 目录下的数据库迁移脚本到您的 D1 数据库。
  4. 部署应用:将构建好的应用部署到 Cloudflare。

您也可以在 GitHub 仓库的 Actions 标签页手动触发部署。

注意事项

  • 工作流文件 (.github/workflows/deploy.yml) 会自动从您的 Secrets 中读取配置并应用到 wrangler.toml 文件中,请勿直接将敏感信息写入 wrangler.toml 文件。
  • 如果您的数据库结构有变更(例如,修改了 worker/src/database/schema.ts),请记得生成新的迁移文件并提交到代码库中,GitHub Action 会自动帮您应用更新。
6 个赞

感谢大佬分享!

图片无法显示哦

现在应该可以了

可以显示了,
感谢分享教程。

感謝您的無私分享~點讚~

谢谢分享,积极学习!

这玉米可真够长的

子域名也太多了吧:grin:

感谢分享

太厉害 不错不错

感谢分享~ :+1:

1 个赞

这个界面挺不错的,但我觉得功能上还是CloudFlare free temp domain email更强些,稍微缺陷就是没法随机,但是CF支持别名转发也差不多了

1 个赞

感谢分享

感谢分享 :xhj003:

要是能添加一个自定义名称就好了!

感谢分享

2 个赞

感谢分享

2 个赞