邮件
配置 Cloudflare Email Sending,验证注册、重置与生产投递,保护开发邮件入口。
本地捕获与生产发送
packages/mail/src/index.ts 提供邮件接口、HTML 转义和环境检查。认证模块用它发送邮箱验证、验证码和密码重置消息。
开发环境不向真实邮箱投递:消息写入开发捕获存储,通过 /dev/mail 查看。生产环境要求 EMAIL binding 和经过验证的发件域,使用 Cloudflare Email Sending 发送。不要从 web/web-cloudflare 复制 Resend 等配置后假定 Flare 会自动识别。
本地验证一封邮件
- 执行
pnpm muse:init和pnpm dev。 - 在注册或忘记密码页触发邮件。
- 打开同一开发实例的
/dev/mail,找到目标地址和主题。 - 使用邮件中的链接完成验证或重置,确认最终能登录。
本地 seed 用户适合快速体验;验证真实注册流程时使用自己的开发邮箱地址与单独账号。不要把截图中包含的验证码或重置链接发布到 issue。
配置生产发件人
在自己的 Cloudflare 账户启用 Email Sending,按控制台要求验证发件域及 DNS。具体账户资格与服务要求以 Cloudflare Email Service 文档 为准。
根目录 .env 或 CI 加密变量设置:
MAIL_FROM=Your Product <[email protected]>
APP_URL=https://app.your-domain.com部署配置必须包含 EMAIL binding。仅填 MAIL_FROM 不会创建发送能力。生产检查会拒绝缺失 binding 或使用 @example.com 的占位发件人。域名经过验证仍不代表每封邮件一定进入收件箱,还需要真实投递验证。
修改邮件内容
在认证触发点和 mail 包之间追踪主题、正文与动作链接。用户输入拼入 HTML 前必须转义;保持验证码、过期与动作链接的语义。修改品牌时同时检查发件名、主题、支持地址与 APP_URL。
不要把认证链接缓存到公开页面。生产错误日志应记录可排查的事件和结果,避免记录完整 token、邮件正文或密钥。
上线验收
- 在自己的生产域完成新账号注册和验证,确认链接 origin 正确。
- 发起密码重置,验证有效链接可用、失效链接失败。
- 检查垃圾邮件、发件域 DNS 与发送服务的错误信息。
- 访问生产
/dev/mail及其 API 应被拒绝,不能读取用户的验证邮件。 - 确认失败时页面显示错误并允许重试,不把请求已发出当作投递成功。
公共演示 https://flare.musemvp.com 可用于查看界面;本次源码配套说明不把演示部署的 HTTP smoke 当作真实邮件投递验收。
排障
本地没有邮件:确认 APP_ENV 为 development、操作产生了邮件、浏览器访问同一端口。生产拒绝发送:检查 EMAIL binding、MAIL_FROM、发件域验证和账户能力。链接跳错域:检查 APP_URL 与进程环境变量优先级。不要为了解决生产投递问题开放开发收件箱。