0

我有一封电子邮件,我正在尝试使用 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

有谁知道为什么会发生这种情况?

4

1 回答 1

0

我解决了我自己的问题。我还需要以二进制模式打开文件。

所以

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

变成

with open(fileName, 'wb') as f:
于 2013-05-19T21:59:46.530 回答