我救了整個消息xx.eml,但有些郵件的身體告訴該郵件是base64編碼在第一行,例如:如何確定是否通過imap base64編碼郵件獲取?
charset="utf-8" Content-Transfer-Encoding: base64
charset="gb2312" Content-Transfer-Encoding: base64
我試圖得到的body[0][1]
的鑰匙,但有沒有內容傳輸編碼字段(僅限內容類型)。
我該如何處理郵件?
def saveMail(conn, num):
typ, body = conn.fetch(num, 'RFC822')
message = open(emldirPath + '\\' + num + '.eml', 'w+')
message.write(str(email.message_from_string(body[0][1])))
print email.message_from_string(body[0][1]).keys()
#['Received', 'Return-Path', 'Received', 'Received', 'Date', 'From', 'To',
# 'Subject', 'Message-ID', 'X-mailer', 'Mime-Version', 'X-MIMETrack',
# 'Content-Type', 'X-Coremail-Antispam']
message.close()
我發現問題,它不是解碼問題。
正確的郵箱如下:
------ = _ Part_446950_1309705579.1326378953207
的Content-Type:text/plain的;字符集= GBK
內容傳輸編碼:的base64
什麼我的程序下載:
------ = _ Part_446950_1309705579.1326378953207
的Content-Type:text/plain的;
字符集= 「UTF-8」
內容傳輸編碼:BASE64
當我的程序保存.eml文件,將其更改行之後 'text/plain的;'
因此Outlook Express中無法解析的郵件 如果我編輯行 「」 內容類型:text/html的;字符集= 「utf-8」」,
它的工作原理
現在的問題是:如何編輯我的程序不讓它線改變?被轉移爲Base64必須設置Content-Transfer-Encoding
但是,爲什麼你需要測試這個?只需保存消息,如果您解碼base64,則可能無法在以後打開保存的文件。我的意思是,即使使用BASE64,您的.eml文件也應該可以很好地工作。 – ext 2012-02-02 07:50:32
我的.eml文件不能正常工作..,郵件的正文不可讀。(由outlook express打開) – user1177284 2012-02-02 09:00:40
您明白了,解碼後很難構建郵件。那麼我怎樣才能將整個消息保存爲xxx.eml並且所有可讀的單詞? – user1177284 2012-02-02 11:00:02