告警邮件主题拼了实例名、错误摘要和堆栈首行,长度 180 字。手机客户端只显示前 40 个字,关键的订单号被截掉,值班同事得点进去找。乍看像缓存或者权限的锅,追下去往往不是。
subject = "[P1] 订单回调失败 SO20261113001 共 12 次" msg["Subject"] = Header(subject, "utf-8") assert len(subject) <= 50
追下去是这么回事:主题不是正文,客户端列表宽度有限,超出部分直接省略。中文经过 encoded-word 编码后长度还会翻几倍,更容易触发截断。关键信息放在末尾等于没放。
「邮件主题过长」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
具体做法是,把最关键的信息放主题最前面 控制在 50 字内;堆栈和详情移到正文 主题只留摘要;主题里避免重复前缀 比如三个 Re;发之前用手机客户端预览一次。
验收就看一点,手机端邮件列表能完整看到级别和订单号,值班同事不用点开就能判断优先级。
