{"id":13453334,"url":"https://github.com/akazwz/smail","last_synced_at":"2026-03-01T12:03:10.340Z","repository":{"id":217611471,"uuid":"744065373","full_name":"akazwz/smail","owner":"akazwz","description":"Temporary email  临时邮箱 Cloudflare email","archived":false,"fork":false,"pushed_at":"2025-06-13T04:06:17.000Z","size":1692,"stargazers_count":884,"open_issues_count":6,"forks_count":171,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-29T23:59:57.509Z","etag":null,"topics":["cloudflare","cloudflare-workers","email","nextjs","remix"],"latest_commit_sha":null,"homepage":"https://smail.pw","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akazwz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-16T15:01:06.000Z","updated_at":"2025-11-28T17:16:37.000Z","dependencies_parsed_at":"2024-01-17T13:28:47.207Z","dependency_job_id":"37a5b941-3912-4a6c-8b60-5950547c9587","html_url":"https://github.com/akazwz/smail","commit_stats":null,"previous_names":["akazwz/smail"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akazwz/smail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akazwz%2Fsmail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akazwz%2Fsmail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akazwz%2Fsmail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akazwz%2Fsmail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akazwz","download_url":"https://codeload.github.com/akazwz/smail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akazwz%2Fsmail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29969243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T11:43:06.159Z","status":"ssl_error","status_checked_at":"2026-03-01T11:43:03.887Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","cloudflare-workers","email","nextjs","remix"],"created_at":"2024-07-31T08:00:38.222Z","updated_at":"2026-03-01T12:03:10.296Z","avatar_url":"https://github.com/akazwz.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Email","邮箱","E-Mail"],"sub_categories":[],"readme":"# Smail - 临时邮箱服务\n\n一个基于 React Router v7 和 Cloudflare Workers 构建的现代化临时邮箱服务。\n\n## 🌟 功能特性\n\n- 🚀 **快速生成**: 一键生成临时邮箱地址\n- 📧 **实时接收**: 即时接收和查看邮件\n- 🔒 **隐私保护**: 邮箱到期后自动删除数据\n- 📱 **响应式设计**: 完美适配桌面和移动设备\n- ⚡️ **无服务器架构**: 基于 Cloudflare Workers，全球加速\n- 🗄️ **现代化技术栈**: React Router v7、TypeScript、TailwindCSS\n- 📊 **数据存储**: 使用 Cloudflare D1 数据库和 R2 对象存储\n\n## 🛠️ 技术栈\n\n- **前端**: React Router v7, TypeScript, TailwindCSS\n- **后端**: Cloudflare Workers, Email Workers\n- **数据库**: Cloudflare D1 (SQLite)\n- **存储**: Cloudflare R2 (附件存储)\n- **ORM**: Drizzle ORM\n- **邮件解析**: postal-mime\n\n## 🚀 快速开始\n\n### 安装依赖\n\n```bash\npnpm install\n```\n\n### 配置环境变量\n\n复制环境变量示例文件并配置：\n\n```bash\ncp .dev.vars.example .dev.vars\n```\n\n编辑 `.dev.vars` 文件，设置必要的环境变量：\n\n```bash\n# 生成 Session 密钥\nopenssl rand -base64 32\n\n# 将生成的密钥填入 .dev.vars 文件中的 SESSION_SECRET\n```\n\n### 设置数据库\n\n```bash\n# 生成数据库迁移文件\npnpm run db:generate\n\n# 应用迁移到本地数据库\npnpm run db:migrate\n```\n\n### 启动开发服务器\n\n```bash\npnpm dev\n```\n\n应用将在 http://localhost:5173 可用。\n\n## 🧪 本地开发和测试\n\n### 发送测试邮件\n\n```bash\n# 快速发送测试邮件\npnpm run test:email\n\n# 发送自定义测试邮件（带附件）\npnpm run test:email:custom [收件人] [发件人] [端口] [是否包含附件]\n\n# 例如：\npnpm run test:email:custom mytest@smail.pw sender@example.com 5173 true\n```\n\n### 数据库管理\n\n```bash\n# 查看迁移状态\npnpm run db:list\n\n# 重置数据库（清空所有数据）\npnpm run db:reset\n\n# 重新应用迁移\npnpm run db:migrate\n```\n\n详细的本地开发指南请查看：[docs/local-development.md](docs/local-development.md)\n\n## 📦 生产环境构建\n\n创建生产构建：\n\n```bash\npnpm run build\n```\n\n## 🚀 部署\n\n### 直接部署到生产环境\n\n```bash\npnpm run deploy\n```\n\n### 部署预览版本\n\n```bash\npnpm wrangler versions upload\n```\n\n验证后可以将版本提升到生产环境：\n\n```bash\npnpm wrangler versions deploy\n```\n\n### 部署前准备\n\n1. **配置 Cloudflare 服务**:\n   - 创建 D1 数据库：`wrangler d1 create smail-database`\n   - 创建 KV 命名空间：`wrangler kv namespace create \"smail-kv\"`\n   - 创建 R2 存储桶：`wrangler r2 bucket create smail-attachments`\n   - 设置 Email Routing\n\n2. **配置 wrangler.jsonc**:\n   复制 `wrangler.example.jsonc` 并填入你的资源ID：\n   ```bash\n   cp wrangler.example.jsonc wrangler.jsonc\n   # 编辑 wrangler.jsonc，填入实际的ID\n   ```\n\n3. **运行远程迁移**:\n   ```bash\n   pnpm run db:migrate:remote\n   ```\n\n## 📂 项目结构\n\n```\n├── app/                    # 应用代码\n│   ├── components/         # React 组件\n│   ├── db/                 # 数据库相关\n│   │   ├── migrations/     # 数据库迁移文件\n│   │   └── schema.ts       # 数据库模式定义\n│   ├── lib/                # 工具函数和数据库操作\n│   └── routes/             # 路由组件\n├── workers/                # Cloudflare Workers\n│   └── app.ts              # Email Worker\n├── scripts/                # 开发脚本\n│   ├── test-email.js       # 邮件测试脚本\n│   └── test-email.sh       # Shell 测试脚本\n├── docs/                   # 文档\n└── wrangler.jsonc          # Cloudflare 配置\n```\n\n## 🎨 样式\n\n项目使用 [Tailwind CSS](https://tailwindcss.com/) 进行样式设计，支持：\n- 响应式设计\n- 暗色模式\n- 现代化 UI 组件\n- 自定义设计系统\n\n## 🤝 贡献\n\n欢迎贡献代码！请：\n\n1. Fork 项目\n2. 创建功能分支\n3. 提交更改\n4. 推送到分支\n5. 创建 Pull Request\n\n## 📄 许可证\n\n本项目采用 MIT 许可证。\n\n## 🛟 支持\n\n如有问题，请：\n- 查看 [本地开发指南](docs/local-development.md)\n- 提交 GitHub Issue\n- 查看 Cloudflare Workers 文档\n\n---\n\n使用 ❤️ 和 React Router 构建。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakazwz%2Fsmail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakazwz%2Fsmail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakazwz%2Fsmail/lists"}