使用MIME发送短信时内容末尾两位字符丢失问题排查
消息末尾两位字符被截断的原因及解决方案
可能原因
- 短信网关解析异常:多数运营商的邮件转短信服务依赖标准MIME格式的邮件内容。你的代码使用
MIMEMultipart包裹纯文本,但如果文本内容末尾没有标准换行符(\r\n),网关可能会将最后两个字节错误识别为不完整的换行标记,直接丢弃。 - MIME编码的隐形处理:
msg.as_string()生成的邮件内容会自动进行MIME编码,若原始文本结尾无换行,编码后的内容末尾会出现不完整的字节序列,被SMTP服务器或网关截断两位。
解决方案
给消息内容添加结尾换行
修改消息定义行,手动添加标准换行符:message = "It's chicken time\r\n"简化邮件结构,改用纯MIMEText
由于你只发送纯文本内容,无需使用MIMEMultipart,直接用MIMEText构建邮件可以避免多余的格式解析问题:# 替换原有的MIMEMultipart相关代码 msg = MIMEText(message, 'plain') msg["Subject"] = "Chicken Alarm" msg["From"] = email msg["To"] = recipient
内容的提问来源于stack exchange,提问作者MyNameHere
相关产品推荐
相关产品推荐

