如何使用 Python 发送 .docx 附件

Posted

技术标签:

【中文标题】如何使用 Python 发送 .docx 附件【英文标题】:How to send .docx attachment using Python 【发布时间】:2020-06-22 02:25:27 【问题描述】:

我已成功通过电子邮件发送并验证了 .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】:

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

【讨论】:

以上是关于如何使用 Python 发送 .docx 附件的主要内容,如果未能解决你的问题,请参考以下文章

将 DOCX 编码为通过电子邮件发送

如何使用python发送包含正文和附件的邮件

如何使用exchangelib在python中将熊猫数据框作为电子邮件附件发送

如何发送电子邮件附件?

如何发送电子邮件附件?

Python 2.7 smtplib 如何发送带有错误 13 权限的附件被拒绝?