【发布时间】:2013-05-20 05:59:46
【问题描述】:
我有一封电子邮件,我正在尝试使用 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
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
“通过 Thunderbird 下载”的文件解压成功了吗?如果是这样,请确保两个文件确实相同。要么将它们都加载为字节串并进行比较。或者如果文件很大,请使用
hashlib.sha512并验证校验和是否相同。