【发布时间】:2020-11-13 08:26:00
【问题描述】:
我正在尝试发送一封带有 python 脚本附件的电子邮件。电子邮件到达我的收件箱,附件中包含所有正确的收件人、主题、正文和数据
问题是附件文件名总是“AT00001.xlsx”而不是脚本中的文件名。
这是我用来发送电子邮件的方法:
def send_email():
msg = MIMEMultipart()
message = "Here is your file"
msg['From'] = MY_ADDRESS
msg['To'] = MY_ADDRESS
msg['Subject'] = "File extract"
msg.attach(MIMEText(message))
attach_file_name = "test.xlsx"
attach_file = open(attach_file_name, "rb")
payload = MIMEBase('application', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet')
payload.set_payload(attach_file.read())
attach_file.close()
encoders.encode_base64(payload)
payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)
msg.attach(payload)
s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587)
s.starttls()
s.login(MY_ADDRESS, PASSWORD)
s.sendmail(MY_ADDRESS, MY_ADDRESS, msg.as_string())
s.quit()
我在各种网站上发现了描述由于附件和文本乱序而发生的此问题的帖子。我验证了附件是电子邮件有效负载中的最后一个,所以我认为这不是造成它的原因。
【问题讨论】:
-
您的标题名称错误:“Content-Decomposition”应为“Content-Disposition”。
-
这样就解决了。我不敢相信我忽略了这一点。非常感谢!