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

如何修改Python email.mime模块的默认换行符?

解决MIMEText默认换行符改为\r\n的问题

没问题!要把MIMEText生成的内容里的换行符从\n改成\r\n适配HTTP请求,其实用Python email模块自带的policy功能就能轻松搞定,具体做法如下:

核心思路

Python的email模块通过**策略(Policy)**来控制邮件内容的格式细节,默认的Compat32策略使用\n作为行结束符,我们只需要自定义一个策略,指定行结束符为HTTP要求的\r\n(CRLF)即可。

完整实现代码

from email.mime.text import MIMEText
from email.policy import EmailPolicy

# 定义适配HTTP的策略,指定行结束符为\r\n
http_policy = EmailPolicy(line_terminator='\r\n')

a = MIMEText('hello')
a['From'] = 'stack'

# 使用自定义策略生成符合HTTP要求的字节内容
result = a.as_bytes(policy=http_policy)
print(result)

执行结果

运行后会输出符合HTTP规范的字节内容:

b'Content-Type: text/plain; charset="us-ascii"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: 7bit\r\nFrom: stack\r\n\r\nhello'

为什么不直接用字符串替换?

可能有人会想到直接用replace(b'\n', b'\r\n')来替换换行,但这种方式存在风险:它会把邮件内容里的\n也一并替换,而我们只需要修改邮件头部的分隔符。使用policy的方式会正确区分头部和内容的换行规则,是更安全、规范的做法。

内容的提问来源于stack exchange,提问作者Eric Stdlib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:53:26