email - 当我将名称设置为变量时,作为 xlsx 的 Python 电子邮件附件不起作用
问题描述
我想不时发送自动邮件,并在邮件中附加一个 excel 文件。如果我直接写 excel 文件的名称没关系,但是如果我将它链接到一个变量,会发生什么是附加的无格式文件。收件箱中的电子邮件视图
简而言之,我希望此行使用名为 attachmentFile 的变量,而不是编写 "2020-01-01.xlsx" part.add_header('Content-Disposition', 'attachment; filename="attachmentFile"')
import smtplib,ssl
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
attachmentFile="2021-01-02.xlsx"
def send_mail():
send_from= 'spotalert@****.com'
send_to='deniz.yildirim@****.com'
subject = 'Uygunsuz Punta Bildirimi'
body_1='Merhaba\n'
body_2= 'xxxxx Nolu Punta Tahribatli kontrolde uygunsuz cikmistir.\n'
body_3='Uygunsuzluk sebebi = xxxxxxx ' + 'Puntanin Bulundugu Posta :'+'\n'
body_4= ' Bu otomatik bir maildir lutfen cevap vermeyiniz.\n'
body_5='Uygunsuzlugun ciktigi tarih'+ '\n'
text = body_1 + body_2 + body_3 + body_4 +body_5
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = send_to
msg['Date'] = formatdate(localtime = True)
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', "octet-stream")
part.set_payload(open(attachmentFile, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="2021-01-02.xlsx"')
msg.attach(part)
解决方案
在代码的倒数第二行,而不是:
part.add_header('Content-Disposition', 'attachment; filename="2021-01-02.xlsx"')
用这个:
part.add_header('Content-Disposition', 'attachment', filename=attachmentFile)
推荐阅读
- laravel - Laravel 与 Litespeed 和 Apache2 和 ProxyPass 在登录后给出 403
- azure - 如何按用户分组并在 U-SQL 中创建具有值的列?
- jquery - 如何将 jquery 变量导出为 html 文件
- python - 将键值对存储为列表理解
- angular - 无法检索数组值
- php - 如何在 mysql 中创建表并更新后元表,例如 sku 行、价格、库存
- contextmenu - 如何完全禁用页面上的拼写检查?
- arrays - 将 x 添加到所有嵌套数组中的每个第二个元素的更快方法
- apache-flink - 流文件接收器:跟踪零件文件何时完成
- flutter - Flutter web 无法使用移动项目中的包