2013-05-12 48 views
0

我有一封電子郵件,我正嘗試從imaplib下載附件。爲什麼我使用imaplib損壞的.CAB附件?

我正在使用電子郵件庫將消息轉換爲email.message類。對於我正在處理的所有電子郵件,這是完美的工作,但是當我獲取此附件時,該文件看起來完好無損,並且使用Notepad ++的比較與通過Thunderbird下載的原始cab文件相匹配。

這是我使用的代碼的一個例子。

fileContents = message.get_payload()[1].get_payload(decode=True) # 
fileName = message.get_payload()[1].get_filename() 
with open(fileName, 'w') as f: 
    f.write(fileContents) 

正如我所說的,文件內容看起來與通過其他客戶端下載的原始文件相同。它的尺寸正好相同。但是,當我在WinRar,7zip或使用Window的EXPAND.exe打開下載的文件時,它會顯示以下消息。

! H:\Code\Backup Monitor\backupsite\tst.CAB: The archive is corrupt 

有沒有人有任何想法,爲什麼這可能會發生?

+0

是否 「通過雷鳥下載」 文件提取OK?如果是這樣,請確保這兩個文件是相同的。既可以將它們裝載爲字節串並進行比較。或者,如果文件很大,請使用'hashlib.sha512'並驗證校驗和是否相同。 – 2013-05-12 18:26:19

回答

0

我修正了我自己的問題。我需要以二進制模式打開文件。

所以

with open(fileName, 'w') as f: 

成爲

with open(fileName, 'wb') as f: 
相關問題