从 python 脚本发送时,outlook 中的电子邮件附件名称总是 "AT00001.xlsx" 而不是实际名称
Email attachment name in outlook always "AT00001.xlsx" instead of actual name when sent from python script
我正在尝试发送一封带有来自 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()
我在各种网站上发现 post 描述了由于附件和文本乱序而导致的此问题。我确认附件位于电子邮件负载中的最后,所以我认为这不是导致它的原因。
正如 rfkortekaas 在他的评论中指出的那样,这个问题的原因是我使用的是“Content-Decomposition”而不是“Content-Disposition”。
我更新了这行代码并且它完美运行:
payload.add_header('Content-Disposition', 'attachment', filename=attach_file_name)
我正在尝试发送一封带有来自 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()
我在各种网站上发现 post 描述了由于附件和文本乱序而导致的此问题。我确认附件位于电子邮件负载中的最后,所以我认为这不是导致它的原因。
正如 rfkortekaas 在他的评论中指出的那样,这个问题的原因是我使用的是“Content-Decomposition”而不是“Content-Disposition”。
我更新了这行代码并且它完美运行:
payload.add_header('Content-Disposition', 'attachment', filename=attach_file_name)