邮件在 Claude Code 工作流中的位置
Claude Code 是 Anthropic 的编程智能体。它在你的终端、编辑器和浏览器中工作,读取你的代码库并在其中进行修改。让它实现“带验证的邮箱和密码注册”,你会得到表单、API 调用和模板,并接入你使用的服务:Supabase Auth、Clerk、Auth.js、Firebase 或你自己的后端。
它不容易做到的是接收邮件。单元测试会模拟发件方,端到端测试也常常跳过验证。所以第一封真实的确认邮件往往是发给第一位真实用户的。
它会构建哪种登录?
你要求哪种就构建哪种。大多数应用最终使用 Supabase Auth、Clerk、Firebase Authentication、Auth.js 或 Better Auth,它们发送的邮件各不相同:Clerk 默认发送验证码,Firebase 发送链接,而 Auth.js 只发送魔法链接,除非你自己构建其余部分。告诉 Claude Code 你想要的方式,例如“邮箱和密码加确认验证码,再加 Google”,然后测试它发送的每封邮件。各登录服务发送哪些邮件。
五分钟端到端检查
- 在 Proxy Mail QA 中创建地址。 如果想每个场景一个,可以一次创建多个,例如新用户、受邀用户和重置。
- 运行你的应用(
npm run dev或类似环境),用该地址注册。 - 等待验证码或链接送达。 几秒内就会出现在该地址的行中:验证码有 Copy 按钮,链接有 Open link 和 Copy link 按钮。
- 完成流程。 将验证码粘贴到应用中,或点击链接。如果链接指向
localhost:3000,我们会标记它。在本地开发时这是正常的:选择 This is my dev environment,该项目中就不会再标记。 - 发布前在预发布环境中重复一遍。 这时 localhost 链接就是真正的 bug,也是生成的认证代码中最常见的问题。修复方法见此。
让 Claude Code 自己检查邮件
Proxy Mail QA 插件会添加 MCP server 和八个技能,一步步带 Claude Code 完成工作,从端到端测试注册,到查明邮件为什么没有送达。在 Claude Code 中逐条运行这两个命令:
/plugin marketplace add aaquib90/proxymail-qa-plugin/plugin install proxymail-qa@proxymail-qa然后输入 /mcp,选择 proxymail-qa 和 Authenticate。浏览器会打开,让你登录 Proxy Mail QA 并选择 Claude Code 可以使用的项目,不需要复制 API 密钥。如果只用 MCP server,改为在终端运行 claude mcp add --transport http proxymail-qa https://api.proxymail.qa/mcp,并用同样方式认证;如果要使用 API 密钥,请参阅 MCP server 设置。
然后用平常的话提问:“在 localhost:3000 上用一个新的 Proxy Mail QA 地址注册,并确认邮件。”Claude Code 会创建地址、填写你的表单、等待验证码或链接,然后完成注册。它只拿到验证码或链接,从不获取邮件正文。
把证据交给 Claude Code
发现问题时,把你看到的内容直接粘贴到会话中。具体比笼统好:
- “预发布环境的确认邮件链接到了
http://localhost:3000/auth/confirm。用环境变量构建重定向 URL,并按环境分别设置。” - “重置邮件说链接 60 分钟内有效,但 5 分钟后就失效了。找出设置过期时间的地方。”
- “一次注册收到了两封验证邮件。找出重复发送的地方。”
收件箱视图会显示每封邮件的发件人、主题、完整内容和其中的所有链接,通常这些就是智能体需要的全部信息。
发布前,让它列出应用发送的所有邮件:
List every email this app sends: sign-up confirmation, magic link, password reset, invite and email change. For each, tell me what triggers it, which URL its link points to, and how long its link or code stays valid. Flag anything that uses localhost.提示
- 给每次运行加标签。 发到
k3f9q2m8x7aa+run2@mailclub.dev的邮件会进入同一个收件箱,并显示标签run2,这样多次运行也能区分开。 - 把密码和账号放在一起。 在地址上保存注册时用的密码,或使用 Generate a test password 生成一个符合常见规则的密码。
- 按项目分组。 你开发的每个应用对应一个项目,关联它的预发布 URL,还可以设置前缀,方便识别它的地址。