1 秒生成、无需注册、限时有效、阅后即焚的临时邮箱服务,基于 Cloudflare Workers 构建,可部署到你自己的域名。 前端原生 HTML/CSS/JS(无框架),后端 Hono + D1,收信走 Cloudflare Email Routing,支持 PWA 安装。
⚠️ 免责声明:本项目仅供合法用途(接收网站注册验证码、一次性试用等)。请遵守你所在地区的法律法规, 勿用于垃圾邮件、诈骗或任何滥用场景。部署者需自行对实例的运营负责。
线上实例:https://1m.de5.net —— 无需注册,打开即可体验完整功能: 1 秒生成临时邮箱、4 秒收信、验证码自动高亮、到期自动销毁。推广文章页见 /blog。
| 收件箱 —— 验证码自动识别高亮 | 移动端收件箱 |
|---|---|
![]() |
![]() |
站点不是功能堆砌——首页本身就是一张「产品说明书」,从打开到收信全程有细节可看:
- Crystal Lumière 设计语言:暖纸底 + 电光靛蓝 + 珊瑚粉 + 翡翠绿,玻璃拟态卡片、颗粒噪点、柔和光斑与光标聚光,观感轻盈不刺眼
- 首屏双态背景:生成器态是纸飞机水晶图,点「生成临时邮箱」后 0.9s 交叉淡入水晶信封背景——发信 → 收信的语义在视觉上完成闭环(纯 CSS,
.hero.has-inbox类驱动,零 JS 动画库) - 单页双模式:生成 → 收件箱在首屏内翻转切换,不跳页不刷新;右侧浮动邮件卡片(GitHub / Stripe / Vercel 拟真推送)+ 双光圈旋转 + 鼠标视差
- 验证码即所得:OTP 自动识别、高亮放大、一键复制;4 秒轮询,新邮件实时置顶并推送浏览器通知
- 倒计时仪式感:渐变进度条、剩余 5 分钟转红预警、一键续期;到期后收件箱自动销毁为「密信已销毁」品牌页,而非冷冰冰的报错
- 品牌化 404 / 410:公开链接过期与不存在都有专属品牌页,销毁流程有始有终
- 排版系统:Bricolage Grotesque 展示体 + Noto Serif SC 衬线 + JetBrains Mono 等宽,中西混排、字距与基线细节统一
- 响应式 + PWA:移动端收件卡片重排为单列、三键横排,可安装、离线可打开首页
- 多格式图片:背景与配图 AVIF > WebP > PNG/JPG 按浏览器自动降级,兼顾画质与加载速度
| 模块 | 说明 |
|---|---|
| 临时邮箱 | 自定义名或随机生成(10 位,避开易混淆字符),有效期 10 分钟 / 1 小时 / 24 小时 |
| 首屏双态背景 | 生成器态纸飞机水晶图 ↔ 收件箱态水晶信封图,0.9s 交叉淡入(.hero.has-inbox,纯 CSS) |
| 收信 | Email Routing Catch-all → Worker email() → postal-mime 解析 → D1;仅已生成且未过期的地址收信 |
| 收件箱 | 4 秒轮询、验证码(OTP)自动识别高亮一键复制、倒计时 + 一键续期、换一个 / 销毁 |
| 公开链接 | /inbox/:地址:有效 302 跳转 / 过期 410「密信已销毁」品牌页 / 不存在 404 品牌页 |
| 系统保留名 | 70+ 保留名(admin / noreply / postmaster 等)不可生成,可自行扩展名单 |
| 隐私 | 到期自动销毁、0 数据保留、外链追踪像素被 CSP 阻断 |
| PWA / SEO | Service Worker + manifest(可安装)、结构化数据、OG 卡片、sitemap |
public/
├── www/ # 静态前端(Worker assets 直接服务)
│ ├── index.html # 首页:生成器 + 首屏收件箱(单页双模式)
│ ├── blog.html # 演示博客页(/blog)
│ ├── terms.html # 服务条款(/terms)
│ ├── privacy.html # 隐私政策(/privacy)
│ ├── 404.html # 品牌 404 页
│ ├── sw.js / manifest.json # PWA
│ ├── _headers # 安全响应头(CSP / HSTS 等)
│ └── blog-img/ img/ # 配图与背景(hero-bg 纸飞机 / hero-bg-inbox 信封,AVIF > WebP > PNG/JPG 多格式)
├── worker/ # Cloudflare Worker 后端
│ ├── src/index.ts # REST API / email() 收信 / cron 清理 / 410·404 品牌页
│ ├── schema.sql # D1 建表(inboxes / messages)
│ ├── wrangler.toml # assets + D1 绑定 + cron 触发器
│ └── package.json
├── .github/workflows/deploy.yml # 一键部署:D1 自动建库 + wrangler deploy
├── LICENSE # MIT
└── README.md
点击上面的 Deploy to Cloudflare Workers 按钮:
- 登录你的 Cloudflare 账号并授权
- 选择本仓库,点击 Deploy
- GitHub Actions 会自动完成:安装依赖 → 创建 D1 数据库(de5_mailhub)→ 初始化表结构 → 部署 Worker
部署完成后还剩两个需在 Cloudflare Dashboard 手动操作的步骤:
- 收件域名:Workers → 你的 worker → Settings → Variables 添加
MAIL_DOMAIN= 你的域名(如mail.example.com) - 自定义域:Settings → Domains & Routes → 添加你的域名
- 收信:域名 → Email → Email Routing → Routing rules → Catch-all → Send to a Worker → 你的 worker 名
之后每次
git push到 main 都会自动重新部署。D1 数据库只需第一次创建。
前置:一个 Cloudflare 账号 + 一个托管在 Cloudflare 的域名(如 mail.example.com)。
在 Cloudflare Dashboard 打开域名 → Email → Email Routing 并启用,按提示添加 MX 记录; SPF / DKIM / DMARC 记录按页面引导补齐(或使用自动添加)。
cd worker
npm installnpx wrangler d1 create de5_mailhub
# 把返回的 database_id 填入 wrangler.toml 的 [[d1_databases]] database_id
npx wrangler d1 execute de5_mailhub --remote --file=schema.sql编辑 worker/wrangler.toml:
name:改成你自己的 worker 名(如my-tempmail)[[d1_databases]] database_id:填上一步拿到的 id[vars] MAIL_DOMAIN:取消注释并填你的域名(如mail.example.com)
前端会自动用访问者的域名(location.hostname)渲染站点内的邮箱地址与分享链接,无需改前端代码。
export CLOUDFLARE_API_TOKEN=<你的 token>
export CLOUDFLARE_ACCOUNT_ID=<你的 account id>
npx wrangler deploy部署后:
- 自定义域:Dashboard → Workers → 你的 worker → Settings → Domains & Routes → 添加
mail.example.com - 收信:Dashboard → 域名 → Email → Email Routing → Routing rules → Catch-all → Send to a Worker → 你的 worker 名
- cron 触发器(每 5 分钟清理过期数据)随部署自动注册
- 打开你的域名 → 点「生成邮箱」→ 复制地址
- 向该地址发一封邮件 → 4 秒内出现在收件箱,验证码自动高亮
- 有效期结束后访问
/inbox/:地址→ 显示 410「密信已过期销毁」页
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/inbox |
生成/复用收件箱。name 自定义名(可省,随机生成);ttl 10/60/1440(默认 60)。保留名返回 409 |
| GET | /api/inbox/:address |
邮件列表。过期返回 410 并清理,不存在 404 |
| GET | /api/inbox/:address/m/:id |
邮件详情(自动标记已读) |
| DELETE | /api/inbox/:address |
销毁收件箱与全部邮件 |
| POST | /api/inbox/:address/extend |
续期(ttl 默认 60 分钟) |
| GET | /inbox/:address |
公开链接:有效 302 / 过期 410 / 不存在 404 |
限流(按 IP):创建 30 次/分 · 列表 240 次/分 · 续期 20 次/分 · 公开链接探测 240 次/分。
- 保留名单:
worker/src/index.ts顶部RESERVED_NAMES,按需增删 - 有效期选项:
TTL_WHITELIST(10 / 60 / 1440 分钟),改这里 + 前端#ttlSeg按钮 - 收信体积上限:
handleEmail中rawSize > 1_500_000直接丢弃,可调 - 品牌页:404 / 410 页面模板在
worker/src/index.ts的gonePage与www/404.html
inboxes(address PK, created_at, expires_at, last_seen);
messages(id, address, mail_id, from_addr, from_name, subject, text_content, html_content, received_at, is_read);SQL 全参数化、前端全量转义、邮件 HTML 仅渲染于无脚本沙箱、1.5MB 收信上限、保留名拦截、 安全响应头(HSTS/CSP/nosniff)、接口限流。发现漏洞请在 GitHub Issues 中报告(附复现步骤)。



