如何使用Python发送.docx附件

问题描述 投票:0回答:1

我已经成功通过电子邮件发送并验证了.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)
python-3.x mime
1个回答
0
投票

DOCX是压缩格式,因此它是一个二进制文件。因此,您的代码使用西方的ISO纯文本编码来读取文件:open("textfile.docx", encoding = "ISO-8859-1")是完全错误的。您可以通过将二进制流作为已编码的纯文本的字节流读入打开来读取二进制流。然后直接从字节码将其编码为base64。不使用任何文本编码。无论如何,在许多其他情况下这是错误的。有人可能会发送utf-8编码的纯文本,而不是西方的ISO编码,这也可能导致您当前脚本的伪像。

© www.soinside.com 2019 - 2024. All rights reserved.