订单通知邮件抬头写的是下单账号昵称,收货人姓名那栏空着,同一批订单里大约三成出现这种情况,代下单的订单特别明显。日志里能对上时间点,这种反而好排。
模板字段是从订单主表取的,收货人信息在子表里,映射配置只配了主表字段。代下单时两者不一致,模板就取了错的那个。这一点先确认清楚,后面就不用反复试。
mapping = {
'receiver_name': order.shipping.name,
'receiver_phone': order.shipping.phone,
}
assert all(mapping.values()), mapping
「邮件模板字段映射」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。
处理上按这个顺序:把收货人姓名、电话、地址显式映射到子表字段,别用昵称兜底;映射表加一条非空校验,关键字段为空时阻断发送并告警;用一笔代下单订单走完整流程,比对邮件和后台详情页。
结果对不对很好判断,代下单的测试订单邮件显示真实收货人姓名,不再出现空栏。
