You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中smtp.sendmail偶尔无法发送邮件主题的原因是什么?

邮件偶发丢失主题的诱因
  • 核心诱因是主题字段未做邮件头规范编码处理:当主题包含非ASCII字符(如中文、特殊符号)、换行/回车符,或内容过长时,直接赋值给msg['Subject']生成的邮件头不符合RFC 2047规范,部分SMTP服务器或邮件客户端解析时会识别失败,丢弃主题字段。
  • 偶发的特性正好对应触发条件的偶发:仅当主题满足上述异常特征时才会出现问题,普通短英文主题场景下可以正常运行。
修复方案
  1. 导入email.header.Header工具类,对主题做标准化编码后再赋值,自动兼容特殊字符、自动处理超长折叠:
# 顶部先导入依赖
from email.header import Header

# 替换原有的msg['Subject'] = subject代码
subject = subject.replace('\n', ' ').replace('\r', '').strip()
msg['Subject'] = Header(subject, codificacion).encode()
  1. 若需兼容特别旧的邮件客户端,可同时校验主题长度,避免超过78字符的邮件头建议长度,超出部分可酌情截断。

修复后可通过代码中打印的msg.as_string()输出验证:符合规范的编码后主题会以=?utf-8?b?xxx?=或=?utf-8?q?xxx?=的格式展示,无非法换行、乱码片段。

内容的提问来源于stack exchange,提问作者sofia peralta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:30:02