- Cloudflare D1 作为数据库
- 使用 Cloudflare Pages 部署前端
- 使用 Cloudflare Workers 部署后端
- email 转发使用 Cloudflare Email Routing
- 使用 password 重新登录之前的邮箱
- 获取自定义名字的邮箱
- 支持多语言
- 增加访问授权,可作为私人站点
- 增加自动回复功能
- 增加查看附件功能
- 免费版附件过大会造成 Exceeded CPU Limit 错误
临时邮箱,也被称为一次性邮箱或临时邮件地址,是一种用于临时接收邮件的虚拟邮箱。与常规邮箱不同,临时邮箱旨在提供一种匿名且临时的邮件接收解决方案。
临时邮箱往往由网站或在线服务提供商提供,用户可以在需要注册或接收验证邮件时使用临时邮箱地址,而无需暴露自己的真实邮箱地址。这样做的好处是可以保护个人隐私
D1
是Cloudflare
的原生无服务器数据库。Pages
是Cloudflare
的静态网站托管服务, 速度超快,始终保持最新状态。Workers
是Cloudflare
的serverless
应用服务,可以在全球 300 个数据中心运行代码, 而无需配置或维护基础架构。Cloudflare Email Routing
可以处理域名的所有电子邮件流量,而无需管理电子邮件服务器。
安装 wrangler
npm install wrangler -g
克隆项目
git clone https://github.com/dreamhunter2333/cloudflare_temp_email.git
第一次执行登录 wrangler 命令时,会提示登录, 按提示操作即可
# 创建 D1 并执行 schema.sql
wrangler d1 create dev
wrangler d1 execute dev --file=db/schema.sql
# schema 更新,如果你在此日期之前初始化过数据库,可以执行此命令更新
# wrangler d1 execute dev --file=db/2024-01-13-patch.sql
# wrangler d1 execute dev --file=db/2024-04-03-patch.sql
创建完成后,我们在 cloudflare 的控制台可以看到 D1 数据库
初始化项目
cd worker
pnpm install
cp wrangler.toml.template wrangler.toml
修改 wrangler.toml
文件
name = "cloudflare_temp_email"
main = "src/worker.js"
compatibility_date = "2023-08-14"
node_compat = true
[vars]
PREFIX = "tmp" # 要处理的邮箱名称前缀
# 如果你想要你的网站私有,取消下面的注释,并修改密码
# PASSWORDS = ["123", "456"]
# admin 控制台密码, 不配置则不允许访问控制台
# ADMIN_PASSWORDS = ["123", "456"]
DOMAINS = ["xxx.xxx1" , "xxx.xxx2"] # 你的域名
JWT_SECRET = "xxx" # 用于生成 jwt 的密钥
BLACK_LIST = "" # 黑名单,用于过滤发件人,逗号分隔
# 免费版附件过大会造成 Exceeded CPU Limit 错误,如果不需要附件功能,可以关闭
ENABLE_ATTACHMENT = true
[[d1_databases]]
binding = "DB"
database_name = "xxx" # D1 数据库名称
database_id = "xxx" # D1 数据库 ID
部署
pnpm run deploy
部署成功之后再路由中可以看到 worker
的 url
,控制台也会输出 worker
的 url
配置对应域名的 电子邮件 DNS 记录
配置 Cloudflare Email Routing
catch-all 发送到 worker
cd frontend
pnpm install
cp .env.example .env.local
修改 .env.local
文件, 将 VITE_API_BASE
修改为 worker
的 url
, 不要在末尾加 /
例如: VITE_API_BASE=https://xxx.xxx.workers.dev
pnpm build --emptyOutDir
# 根据提示创建 pages
pnpm run deploy