第 6 节:邮箱注册与忘记密码,怎样验证真实发送和收件
HORU 跨境社区实战 · 第 06 节
从一次测试邮件能收到、注册验证码却没收到的现象出发,拆解发送分支与投递证据。
本文记录 HORU 跨境社区 的实际建设过程。HORU(horu.world)同时提供蜡笔小账本、租的值与博客,各项目使用统一身份入口。文中历史页面和验收记录按当时状态说明。
测试邮件成功仍需检查业务链路
HORU 的接入过程中出现过这样的现象:命令行测试邮件能收到,注册页面显示了泛化提示,用户却没有收到验证码。测试脚本与注册业务并不一定走相同的判断分支。定位时先记录邮箱、操作时间和业务入口,再到邮件平台检查是否生成了对应发送记录。
先判断邮件是否真的被提交
没有发送记录时,优先检查请求是否到达后端、邮箱是否被判定为已有账号、是否触发频率限制、配置是否被正确加载,以及发送函数是否被调用。统一的“若该邮箱可注册,验证码已发送”提示可以减少账号枚举,但服务端内部仍需要可追踪的结果,不能让所有错误都消失在同一条提示中。
发送有三个不同结果
应用把邮件交给 SMTP 服务,是第一步;邮件平台向收件方投递并记录结果,是第二步;用户在收件箱或垃圾箱实际看到邮件,是第三步。HORU 使用阿里云邮件推送的发送详情辅助核对。平台出现成功记录支持投递层面的判断,最终收件仍需要用户侧确认或实际收件测试。
注册验证码需要绑定用途
验证码应绑定邮箱与注册用途,设置有效期、发送冷却和错误尝试限制。注册提交时必须由服务端核对验证码,使用后使其失效。客户端倒计时只能改善体验,不能替代服务端限流。日志可以记录请求标识、发送状态和脱敏邮箱,避免直接记录明文验证码与密码。
忘记密码要兼容已有账号
找回流程需要确认邮箱归属,并处理旧账号没有有效绑定邮箱的情况。重置完成后,应使重置凭据失效,并按系统策略处理旧会话。验收时应覆盖过期验证码、重复使用、错误邮箱与过多尝试。执行真实密码修改还涉及账号控制,应由账号持有人完成必要的凭据确认。
把证据连接起来
一条完整记录可以包含前端请求时间、后端处理结果、邮件平台发送记录及实际收到的邮件主题。不要把测试邮件截图用于证明注册验证码已经成功发送。对注册和忘记密码分别触发、分别核对,才能发现业务分支、账号状态与发送配置之间的问题。
把这一节用到自己的项目
先选一个真实入口或一条测试数据,按下面的顺序记录结果,再扩大检查范围。
- 注册和找回分别触发邮件
- 发送记录对应操作时间
- 用户收件结果单独确认
邮件排查记录模板
操作类型:注册 / 找回密码
操作时间:记录到分钟
收件邮箱:记录时脱敏
应用处理:发送 / 限流 / 已有账号 / 失败
邮件平台:记录编号和投递状态
实际收件:收件箱 / 垃圾箱 / 尚未收到

1 条评论
登录后即可参与讨论 💬
登录 / 注册后评论