type
status
date
slug
summary
tags
category
icon
password
使用 Cloudflare email worker 实现的临时电子邮件服务

⭐特点

  • ✨ 隐私友好,无需注册,开箱即用
  • ✨ 更好的 UI 设计,更加简洁
  • 🚀 快速部署,无需服务器
原理:
  • Email worker 接收电子邮件
  • 前端显示电子邮件(remix)
  • 邮件存储(sqlite)
worker接收电子邮件 -> 保存到数据库 -> 客户端查询电子邮件

⭐自部署教程

准备工作

  • Cloudflare 账户与托管在 Cloudflare 上的域名
  • turso sqlite 数据库(个人免费计划足够)

接收邮件教程

1.注册一个 turso 账户,创建数据库,并创建一个emails
notion image
然后,创建一个名为 emails 的表。
选择您的数据库,您会看到“编辑表”按钮,点击并进入:
发现网页版好像新建不了表,所以我们使用turso 提供的 cli 来初始化表
Linux (或 mac/windows) 终端执行:
执行完上方第一行代码后重启终端(Linux服务器),执行第二行代码按照提示登录,如果无法调用浏览器进行登录,则可以使用
然后将登陆后的export内容粘贴到终端回车,然后将上方最后一行代码改成你创建的数据库名称后执行。
然后执行下方sql脚本
将sql脚本复制到网页的SQL runner运行(需要修改字段)
2.部署 email worker
在 vmail/apps/email-worker/wrangler.toml 文件中填写必要的环境变量。
  • TURSO_DB_AUTH_TOKEN(第1步中的turso表信息,点击“Generate Token”)
  • TURSO_DB_URL(例如 libsql://db-name.turso.io)
  • EMAIL_DOMAIN (域名,如 vmail.dev)
如果您不执行此步骤,可以在Cloudflare的 worker settings 中添加环境变量
然后运行命令:
发布如果遇到问题或可直接新建workers添加下面的代码试试
本人踩坑经历windows cmd执行报错无法成功npx wrangler login,在VMware 安装 Ubuntu,在虚拟机环境中执行操作解决。
3.配置电子邮件路由规则
设置“Catch-all”操作为发送到 email worker:
notion image
这里在部署的时候遇到一个问题:状态一直处理类似加载中的状态
解决方案
notion image
保存以后你会发现状态处于活动或者disable状态,然后继续编辑改回发送到Worker,选择email-worker,保存以后如果是disable状态的话手动开启即可!!!
4.在 Vercel 或 fly.io 上部署 Remix 应用程序
确保在部署时准备并填写以下环境变量(.env.example):
变量名
说明
示例
COOKIES_SECRET
必填,cookie加密密钥,随机字符串
12345abcde
TURSO_DB_RO_AUTH_TOKEN
必填,turso数据库只读凭据
my-turso-db-ro-auth-token
TURSO_DB_URL
必填,turso数据库URL
libsql://db-name.turso.io
EMAIL_DOMAIN
必填,域名后缀,支持多个
vmail.dev,meetu.dev
EXPIRY_TIME
可选,邮箱过期时间,单位秒,默认86400
86400
TURNSTILE_KEY
可选,网站验证所需的 Turnstile Key
my-turnstile-key
TURNSTILE_SECRET
可选,网站验证所需的 Turnstile Secret
my-turnstile-secret
获取 TURNSTILE_KEYTURNSTILE_SECRET 请前往 cloudflare 控制台 https://dash.cloudflare.com/[account-id]/turnstile
关于TURNSTILE_KEYTURNSTILE_SECRET 配置
notion image
添加站点,站点名称自己定、域填写主域(二级域名没试过可以自己尝试是否可用),其他选项默认即可
Vercel:
推荐使用一键部署按钮(此操作会在你的github账户中自动创建vmail仓库并关联部署到vercel):
或手动将代码推送到你的 Github 仓库,并在 Vercel 面板中创建项目。选择 New project,然后导入对应的 Github 仓库,填写环境变量,选择 Remix 框架,点击 Deploy,等待部署完成。
部署完后继续点击 Countinu to Dashboard,进入 Settings -> General,修改下面设置:
一般默认无需修改
一般默认无需修改
默认nodejs版本可能是20.x 修改为18.x
默认nodejs版本可能是20.x 修改为18.x
然后进入 Deployments 重新部署一次,或向 github 推送代码重新触发部署fly.io:
5.部署成功后在 cloudflare 添加域名解析(A记录)到对应平台,就可以愉快的玩耍了
vercel 演示如何解析:
notion image
notion image

发送邮件教程

准备工作
  • 继续使用收件教程中托管到 cf 的域名
  • DKIM(可选)
1. 创建发件 worker
这里使用手动创建的方式:
  • 进入 Cloudflare 控制台 https://dash.cloudflare.com/,点击侧边栏 Workers 和 Pages
  • 点击创建应用程序 -> 创建 worker -> 名称随意,比如 sender -> 点击 部署
  • 进入到该 worker,点击 编辑代码,将代码 send-worker.js 粘贴进去并保存部署
  • 在 worker 的 设置 -> 变量 中添加以下变量:
变量名
说明
示例
DKIM_DOMAIN
可选,域名后缀
vmail.dev
DKIM_PRIVATE_KEY
可选,DKIM 私钥
MIIEpQIBAAKCAQEA...
DKIM_SELECTOR
可选,固定值 mailchannels
mailchannels
DKIM_PRIVATE_KEY 后续会提到如何获取。
记住 worker 分配的地址,即 https://<worker-name>.<your-name>.workers.dev,后面会用到。
send-worker.js代码
该地址可在Workers 选中sender 设置→触发器中查看
2. 准备 DKIM 私钥(可选)
DKIM 是一种电子邮件认证技术,可以验证邮件的发送者身份。
在终端执行下面的命令,生成 DKIM 私钥,参考 Adding-a-DKIM-Signature
可在windows环境下Git Bash中执行生成
这两条命令会生成3个文件:
  • private_key.pem:私钥文件
  • private_key.txt:私钥文件,base64 编码
  • dkim_record.txt:DKIM 记录
其中 private_key.txt 文件中的内容就是上一步 DKIM_PRIVATE_KEY 变量的值。
3. 配置 DNS
进入 Cloudflare 托管域名控制台,选择你的域名 -> 点击 DNS,接下来,需要添加3条TXT记录修改1条TXT记录
新增的如下:
类型
名称
备注
TXT
_dmarc
v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:YYY; ruf=mailto:YYY pct=100; fo=1;
固定值
TXT
mailchannels._domainkey
v=DKIM1;p=MIIEpQIBAAKCAQEA...
值为 dkim_record.txt 文件的内容
TXT
_mailchannels
v=mc1 cfid=yesmore.workers.dev
将其中的 yesmore 修改为你的账号名称
需要修改的如下(TXT记录值为 example.com 即你的域名的那条):
类型
名称
备注
TXT
example.com
v=spf1 include:_spf.mx.cloudflare.net include:relay.mailchannels.net ~all
把值替换为这个,其他不动
最后一共4条TXT记录:
notion image
4. 验证发送
方法一:打开网页 https://<sender-name>.<your-name>.workers.dev/submit 验证是否可以正常发送
方法二:使用 API 发送
  • 请求地址 https://<sender-name>.<your-name>.workers.dev
  • 请求方法 POST
  • 请求体:
示例:
notion image
5. 添加环境变量
此项目使用第4步中的方法二通过 API 发送邮件。
在 Vercel 项目控制台中,进入 Settings -> Environment Variables,添加以下变量:
  • SEND_WORKER_URL:值为 https://<sender-name>.<your-name>.workers.dev
添加后重新触发部署一次即可。
搭建属于自己的uptimerobot API的站点监控面板render部署aurora
Loading...
IMyself
IMyself
前端小萌新~
最新发布
初始化服务器安装配置
2025-1-26
render部署aurora
2025-1-26
Vmail 临时邮箱部署教程
2025-1-26
搭建属于自己的uptimerobot API的站点监控面板
2025-1-26
VMware 17 Pro 安装 Ubuntu系统
2025-1-26
基于VMware的Ubuntu虚拟机使用主机代理
2025-1-26
公告
🎉老站点迁移中🎉
-- 感谢您的支持 ---
2021-2025IMyself.

IMyself | 前端小萌新~