У меня есть электронная почта, с которой я пытаюсь загрузить приложение, используя imaplib.Почему приложения .CAB я извлекаю с повреждением imaplib?
Я использую библиотеку электронной почты для перевода сообщений в класс email.message. Это отлично работает для всех электронных писем, с которыми я имею дело, но когда я извлекаю это вложение, файл выглядит неповрежденным и использует сравнение Notepad ++, соответствует исходному файлу cab, загружаемому через Thunderbird.
Это пример кода, который я использую.
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 или используя EXPAND.exe окна, он выводит следующее сообщение.
! H:\Code\Backup Monitor\backupsite\tst.CAB: The archive is corrupt
У кого-нибудь есть идеи, почему это может произойти?
ли файл "загруженный через Thunderbird" экстракт OK? Если это так, убедитесь, что оба файла _really_ одинаковы. Либо загрузите их, либо как байты, и сравните их. Или, если файлы являются большими, используйте hashlib.sha512 и убедитесь, что контрольные суммы совпадают. –