我希望使用Python的email
模块将MIME邮件消息部分的编码从quoted-printable
或base64
更改为7bit
或{{1} }。所有这些似乎都有效,但最后,对于某些消息,8bit
将某些部分(email.message.as_string
和text/plain
都遇到)编码为text/html
。我不明白为什么,以及如何理解这种行为以避免它。
脚本代码:
base64
(如果这很重要:我使用Python 3.3)
答案 0 :(得分:2)
请改用as_bytes
。因此,请将您的打印更改为:
print(msg.as_bytes().decode(encoding='UTF-8'))
原因在于政策文件 https://docs.python.org/3.4/library/email.policy.html#module-email.policy
cte_type值为8bit仅适用于BytesGenerator,而不适用于Generator,因为字符串不能包含二进制数据。如果Generator在指定cte_type = 8bit的策略下运行,它将表现为cte_type为7bit。
as_string使用Generator,但是as_bytes使用你需要的BytesGenerator