WeMail Docs

WeMail 部署指南

从本地启动到 Cloudflare 生产部署的完整 WeMail 文档入口

WeMail 是一个基于 Cloudflare Workers、D1、KV、Email Routing 和 React 的 disposable email 工作台。这个文档站按新手部署顺序组织:先在本地跑起来,再创建 Cloudflare 资源,最后发布 Worker、Pages 和邮件路由。

如果你第一次接触 Cloudflare 部署,建议从上到下读一遍。每个章节都尽量给出可复制命令、验收方式和常见错误。

推荐阅读顺序

你最终会部署出什么

组件代码位置Cloudflare 资源作用
前端控制台apps/webPages用户访问、登录、创建邮箱、查看邮件、管理设置
Worker APIapps/workerWorkersHTTP API、认证、邮件处理、定时清理
数据库apps/worker/src/infrastructure/dbD1用户、邀请码、邮箱账号、邮件、设置、审计记录
缓存Worker binding CACHEKV缓存字典、域名设置、功能开关等低频数据
收件链路Worker email() handlerEmail Routing接收外部邮件并写入 WeMail
附件存储Worker binding ATTACHMENTSR2,可选保存邮件附件真实文件内容

部署路线图

Cloudflare 资源准备示意图

上图是示意截图,用来说明 WeMail 的资源关系。真实控制台界面可能随 Cloudflare 更新而变化,但你需要核对的资源名称和关系是一致的。

  1. 本地先执行 pnpm db:init:workerpnpm dev,确认功能主路径能跑通。
  2. 在 Cloudflare 创建 D1 和 KV,把返回的 ID 写进 apps/worker/wrangler.toml
  3. 配置 Worker 的非敏感变量和 secrets,确保 staging / production 分开。
  4. 部署 Worker,跑远端 D1 migrations。
  5. 部署 Pages,确认前端能访问正确的 Worker API。
  6. 启用 Email Routing,给创建的邮箱账号投递真实邮件。
  7. 用 staging 完成冒烟,再从 main 发布 production。

文档里的截图说明

文档中有两类截图:

  • 真实本地页面截图:来自当前文档站或本地可访问页面。
  • 示意截图:用于展示 Cloudflare、GitHub Actions、终端命令和配置重点。它们不包含真实账号信息,适合新手对照步骤理解界面位置和检查项。

凡是示意截图,页面说明里都会明确标注。

常用命令速查

pnpm install
pnpm db:init:worker -- --invite-code LOCAL-INVITE
pnpm dev
pnpm test
pnpm typecheck
pnpm lint
pnpm build
pnpm dev:docs

新手最容易混淆的三件事

Web 打开不等于邮件可用

Pages 打开只说明前端部署成功。真实邮件进入系统还需要 Email Routing 调用 Worker 的 email() handler。部署完成后必须投递一封测试邮件。

D1 本地库和远端库不是同一个

pnpm db:init:worker 初始化的是本地 D1,用于开发。staging 和 production 的 D1 需要在 Cloudflare 里分别创建,并通过 workflow 或 Wrangler 运行远端 migrations。

前端 API 地址要提前决定

生产构建时,如果不设置 VITE_API_BASE_URL,前端会调用同域的 /api/...。这适合同域路由方案。若 Worker API 使用独立域名,需要在构建前设置 VITE_API_BASE_URL,并让 Worker 的 CORS_ALLOWED_ORIGINS 精确包含 Pages 域名。

On this page