一个基于 React Router v7 和 Cloudflare Workers 构建的现代化临时邮箱服务。
- 🚀 快速生成: 一键生成临时邮箱地址
- ✨ 自定义前缀: 支持使用自定义前缀创建个性化邮箱地址
- 🎲 多域名支持: 随机域名选择器,支持多个域名配置
- 🔄 实时预览: 输入时实时预览将要生成的邮箱地址
- 📧 实时接收: 即时接收和查看邮件,自动刷新收件箱
- 🔒 隐私保护: 邮箱到期后自动删除数据
- 📱 响应式设计: 完美适配桌面和移动设备
- ⚡️ 无服务器架构: 基于 Cloudflare Workers,全球加速
- 🗄️ 现代化技术栈: React Router v7、TypeScript、TailwindCSS
- 📊 数据存储: 使用 Cloudflare D1 数据库和 R2 对象存储
- 前端: React Router v7, TypeScript, TailwindCSS
- 后端: Cloudflare Workers, Email Workers
- 数据库: Cloudflare D1 (SQLite)
- 存储: Cloudflare R2 (附件存储)
- ORM: Drizzle ORM
- 邮件解析: postal-mime
pnpm install复制环境变量示例文件并配置:
cp .dev.vars.example .dev.vars编辑 .dev.vars 文件,设置必要的环境变量:
# Session 密钥 - 用于用户会话加密
SESSION_SECRET=your-generated-secret-key
# 生成新的 Session 密钥命令:
openssl rand -base64 32为避免每次部署时环境变量被清空,建议在 wrangler.jsonc 中配置:
支持的环境变量:
SESSION_SECRET: 用户会话加密密钥(必需)AVAILABLE_DOMAINS: 可用域名列表,逗号分隔(可选,默认:smone.us)- 单个域名:
"smone.us" - 多个域名:
"smone.us,temp.email,example.org" - 多域名时支持随机选择和手动切换
- 单个域名:
ENVIRONMENT: 运行环境标识(可选)
# 生成数据库迁移文件
pnpm run db:generate
# 应用迁移到本地数据库
pnpm run db:migratepnpm dev应用将在 http://localhost:5173 可用。
- 支持用户自定义邮箱前缀(如:[email protected])
- 实时预览功能,输入时动态显示将要生成的邮箱地址
- 自动过滤无效字符,确保邮箱地址格式正确
- 空白前缀时自动切换为随机生成模式
- 支持配置多个可用域名
- 🎲 骰子按钮:一键随机选择域名
- 环境变量
AVAILABLE_DOMAINS配置域名列表 - 自动负载均衡分配邮箱地址
- 动态按钮文本:根据输入状态显示不同操作提示
- 高级选项折叠面板:保持界面简洁的同时提供强大功能
- 实时表单验证和用户反馈
- 访问主页,系统自动生成随机邮箱(如:
[email protected]) - 点击复制按钮即可使用
- 点击 "高级选项" 展开配置面板
- 输入自定义前缀(如:
work) - 实时预览显示:
[email protected] - 点击 "✨ 使用 'work' 生成邮箱" 按钮
- 在高级选项中选择不同域名
- 点击 🎲 骰子按钮随机选择域名
- 配合自定义前缀使用(如:
[email protected])
# 快速发送测试邮件
pnpm run test:email
# 发送自定义测试邮件(带附件)
pnpm run test:email:custom [收件人] [发件人] [端口] [是否包含附件]
# 例如:
pnpm run test:email:custom [email protected] [email protected] 5173 true# 查看迁移状态
pnpm run db:list
# 重置数据库(清空所有数据)
pnpm run db:reset
# 重新应用迁移
pnpm run db:migrate详细的本地开发指南请查看:docs/local-development.md
创建生产构建:
pnpm run buildpnpm run deploypnpm wrangler versions upload验证后可以将版本提升到生产环境:
pnpm wrangler versions deploy-
配置 Cloudflare 服务:
- 创建 D1 数据库:
wrangler d1 create smail-database - 创建 KV 命名空间:
wrangler kv namespace create "smail-kv" - 创建 R2 存储桶:
wrangler r2 bucket create smail-attachments - 设置 Email Routing
- 创建 D1 数据库:
-
配置 wrangler.jsonc: 确保
wrangler.jsonc包含所有必要配置:{ "name": "your-app-name", "vars": { "SESSION_SECRET": "your-session-secret", "AVAILABLE_DOMAINS": "smone.us,temp.example.com,mail.yourdomain.org" }, "d1_databases": [ { "binding": "DB", "database_name": "smail-database", "database_id": "your-database-id" } ] // ... 其他配置 } -
运行远程迁移:
pnpm run db:migrate:remote
❗ 重要提示:为避免变量在部署时被清空
- ✅ 推荐:在
wrangler.jsonc的vars字段中配置 - ❌ 不推荐:仅在 Cloudflare Dashboard 中配置(可能被清空)
- 📝 开发时:使用
.dev.vars文件
添加新变量的步骤:
- 在
wrangler.jsonc的vars中添加 - 重新部署:
pnpm run deploy - 变量会持久保存,不会被清空
├── app/ # 应用代码
│ ├── components/ # React 组件
│ ├── db/ # 数据库相关
│ │ ├── migrations/ # 数据库迁移文件
│ │ └── schema.ts # 数据库模式定义
│ ├── lib/ # 工具函数和数据库操作
│ └── routes/ # 路由组件
├── workers/ # Cloudflare Workers
│ └── app.ts # Email Worker
├── scripts/ # 开发脚本
│ ├── test-email.js # 邮件测试脚本
│ └── test-email.sh # Shell 测试脚本
├── docs/ # 文档
└── wrangler.jsonc # Cloudflare 配置
项目使用 Tailwind CSS 进行样式设计,支持:
- 响应式设计
- 暗色模式
- 现代化 UI 组件
- 自定义设计系统
欢迎贡献代码!请:
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建 Pull Request
本项目采用 MIT 许可证。
如有问题,请:
- 查看 本地开发指南
- 提交 GitHub Issue
- 查看 Cloudflare Workers 文档
使用 ❤️ 和 React Router 构建。
{ // ... 其他配置 "vars": { "ENVIRONMENT": "production", "SESSION_SECRET": "your-generated-secret-key", "AVAILABLE_DOMAINS": "smone.us,your-domain.com" } }