以编程方式检测和更正python电子邮件标头中的Content-Type
charset
的正确方法是什么?
我有一千封电子邮件提取到.eml
(基本上是纯文本)文件,有些已编码为shift_jis
,但是电子邮件标题中的字符集没有提及此内容,因此它们在任何电子邮件程序中均无法正确显示。将charset
手动添加到Content-Type
标头中可以解决此问题。
是:
Content-Type: text/plain; format=flowed
需要是:
Content-Type: text/plain; charset="shift_jis"; format=flowed
在python中保留电子邮件正文和标头的其他部分的正确方法是什么?
另外,有没有一种方法可以检测到哪种编码方式,并且仅使用该编码方式进行校正?我不能只是盲目地转换所有内容,因为有些是
iso_2022_jp
,而那些已经正确显示了。 最佳答案
使用get_charset,您可以获取消息的预先存在的字符集。这是一个示例:
from email import message_from_file
msg = message_from_file(open('path.eml'))
msg.get_charsets()
[None, 'gb2312', None]
使用这种方法,您可以遍历所有消息,并使用set_charset()将其设置为没有正确消息的消息。
关于python - 如何在python的电子邮件标题中检测和更正Content-Type字符集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46677046/