2017-01-25 10 views
0

У меня есть программа, которая вытащит вложения файлов в общий сетевой ресурс. У меня это работает как в отдельных частях, так и в нескольких частях сообщений электронной почты.PDF Вложение Downloader не работает с base64 Кодировка

Я недавно получил mutlipart, что показывает, как:

Content-Type: application/pdf Content-Disposition: attachment; filename="=?utf-8?B?SW52b2ljZShzKS5wZGY=?=" Content-Transfer-Encoding: base64

Это неисправное в записи файла из-за файл.

Вот код, где я пишу PDF:

fp = open(os.path.join(path, filename), 'wb') fp.write(part.get_payload(decode=True)) fp.close()

Однако я думаю, что часть работает должным образом, и это провал на записи файла ... Я не знаю, как перевести это имя файла в читаемый текст. Вот код, я использую, чтобы определить имя файла:

filename = part.get_filename() filename_zero, fileext =os.path.splitext(filename)
filename = str(var_seq) + "_" + filename_zero + fileext

Любое понимание того, что я пропускаю очень ценится.

+1

Insight: рассмотреть [ 'email.header.decode_header()'] (https://docs.python.org/2/library/email.header. HTML # email.header.decode_header). Альтернатива: рассмотрите http://stackoverflow.com/questions/7406102/create-sane-safe-filename-from-any-unsafe-string –

+0

'email.header.decode_header()' именно то, что мне нужно. Большое спасибо @ Robᵩ – AlliDeacon

ответ

1

email.header.decode_header() был именно тем, что мне нужно. Спасибо!

Добавлены следующие строки:

filename = part.get_filename() if decode_header(filename)[0][1] is not None: filename = str(decode_header(filename)[0][0]).decode(decode_header(filename)[0][1]) filename_zero, fileext = os.path.splitext(filename) filename = str(var_seq) + "_" + filename_zero + fileext

 Смежные вопросы

  • Нет связанных вопросов^_^