如何在python中检测并更正电子邮件头中的Content-Type字符集?

时间:2017-10-10 22:35:23

标签: python email character-encoding shift-jis

在python的电子邮件标题中以编程方式检测并更正Content-Type charset的正确方法是什么?

我有1000封电子邮件被提取到.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,而且这些已经正确显示。

1 个答案:

答案 0 :(得分:1)

使用get_charset,您可以获得预先存在的邮件字符集。这是一个样本:

from email import message_from_file
msg = message_from_file(open('path.eml'))
msg.get_charsets()
[None, 'gb2312', None]

使用这种方法,您可以遍历所有消息,并使用set_charset()将其设置为不具备正确消息的消息。