[英]How to detect and correct the Content-Type charset in email header in python?
在 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
,而那些已經正確顯示。
使用get_charset,您可以獲得消息的預先存在的字符集。 這是一個示例:
from email import message_from_file
msg = message_from_file(open('path.eml'))
msg.get_charsets()
[None, 'gb2312', None]
使用這種方法,您可以遍歷所有消息,並使用 set_charset() 將其設置為沒有它的那些為正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.