为什么我用imaplib获取的.CAB附件损坏?

时间:2013-05-12 17:42:53

标签: python email imaplib

我有一封电子邮件,我正在尝试使用imaplib下载附件。

我正在使用电子邮件库将邮件转换为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

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

我修复了自己的问题。我也需要以二进制模式打开文件。

所以

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

变为

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