Я пытаюсь загрузить вложения электронной почты, используя imaplib
и email
, но у меня возникают проблемы с кодированием с помощью функции get_filename
из электронной почты.
Вот мой код:
msg = email.message_from_bytes(data[0][1])
for part in msg.walk():
# if part is a PDF file
filename = part.get_filename()
file = part.get_payload(decode = True)
open(filename,'wb').write(file)
Иногда имя файла содержит закодированный текст, поэтому я получаю сообщение об ошибке при его сохранении.
Исходное имя файла 2019 corrigé 26 4 Rang d’une famille de vecteurs d une application linéaire.pdf
.
Ошибка в последней строке образца моего кода:
OSError: [Errno 22] Invalid argument: '2019_corrigé_26_4_Rang_d’une_famille_de?%\r\n %?UTF-8?Q?_vecteurs_d_une_application_linéaire.pdf'
У меня ранее была эта проблема с содержимым электронной почты но использование part.get_payload(decode = True).decode('utf-8')
исправило это.
Не знаю, возможно ли что-то подобное с получением имени файла?