Как отправить вложение .docx, используя Python - PullRequest
0 голосов
/ 10 марта 2020

Я успешно отправил по электронной почте и подтвердил .txt / .ppt / .pdf файлы, но, используя тот же код, я не могу открыть вложение из писем этого сценария.

filename = "textfile.docx"
part = MIMEBase('application', "octet-stream")
part.set_payload(open("textfile.docx", encoding = "ISO-8859-1").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=filename)
msg.attach(part)

1 Ответ

0 голосов
/ 10 марта 2020

DOCX - это сжатый формат, поэтому это двоичный файл. Следовательно, ваш код использует западную стандартную кодировку ISO для чтения файла: open("textfile.docx", encoding = "ISO-8859-1") просто неправильно. Вы можете прочитать двоичный поток, открыв его как экземпляр потока байтов кодированного простого текста. Затем закодируйте его в base64 непосредственно из байт-кода. не используя текстовую кодировку. Что во многих других случаях было бы неправильно в любом случае. Кто-то может отправить незашифрованный незашифрованный текст в кодировке utf-8 вместо западного ISO-кода, что также может вызвать артефакты в вашем текущем скрипте.

...