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、または Windows の 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 に答える