投递排查实验台

测试邮件没到,先判断它停在哪一层

不要一开始就反复重发。先确认地址,再看发送任务和服务商响应,最后检查收件轮询与正文渲染。

开始逐项排查
选择你已经确认的事实

建立本次故障快照

收件地址
发送任务
服务商响应
收件页面
等待输入

先完成左侧四项

结论会指出最先值得检查的一层,并给出下一步证据。它不会假装直接读取你的发件系统。

  1. 复制本轮使用的完整收件地址。
  2. 保留发送时间、消息编号与响应码。
  3. 记录是否能看到主题、HTML 和纯文本正文。

五层证据链

从最容易验证的环节向外推进

每一层都要找到可观察证据,再进入下一层。这样能避免把地址问题误判成模板问题。

01

地址层

重新从当前页面复制地址,检查 @ 前后是否完整、临时箱是否仍在倒计时内。换地址后,旧令牌和旧收件地址不应继续作为测试目标。

证据:完整地址与有效期
02

任务层

确认业务动作确实触发了邮件任务,而不是只写入待处理队列。核对环境变量、队列消费者、模板选择和收件人参数。

证据:任务 ID 与执行日志
03

投递层

查看 SMTP 或邮件服务商返回的响应。接受只表示下一跳已接收,不等于最终进入收件箱;拒绝码则通常已给出方向。

证据:消息 ID 与响应码
04

读取层

等待一个轮询周期后手动刷新。若同一箱的其他邮件能出现,问题更可能位于单封邮件或上游投递,而非页面连接。

证据:刷新时间与邮件计数
05

正文层

列表有主题但详情为空时,分别检查 html_body 与 text_body。HTML 模板错误、过大的远程资源或危险脚本不等于邮件没有抵达。

证据:主题、发件人和正文原字段

快速判断

现象不同,优先级也不同

最小复现

把复杂业务缩成一封可比较的邮件

用固定主题、纯文本一句话和唯一事件编号发送到新建地址。若最小邮件能到,再逐步加回 HTML、图片、附件和业务变量。

建议记录
1

测试环境与提交版本

例如 staging / commit hash

2

触发时间与消息编号

统一使用 UTC 或注明时区

3

地址、主题与结果

隐藏令牌,不在工单粘贴验证码

回到真实收件测试

新建一个干净地址,完成最小复现

保留本次发送证据,然后用临时收件箱核对主题、时间和正文。

打开临时邮箱