使用SMTP发送xlsx文件&;Python 3

使用SMTP发送xlsx文件&;Python 3,python,excel,smtp,smtplib,Python,Excel,Smtp,Smtplib,我在将文件名附加到电子邮件并发送时,无法让SMTP服务器保留我的文件名。我运行了两次,效果非常好。姓名和excel表按预期显示。现在,无论我做什么,附件总是像ATT00001.xlsx一样,过去它工作得很好。(确切地说是在午餐休息时离开,回来后重新运行,没有任何更改)我想知道是否是我如何将excel表附加到我的电子邮件中的。有人知道这是怎么回事吗?谢谢 msg = MIMEMultipart() sender='email@email.org' recipients='email@recipie

我在将文件名附加到电子邮件并发送时,无法让SMTP服务器保留我的文件名。我运行了两次,效果非常好。姓名和excel表按预期显示。现在,无论我做什么,附件总是像ATT00001.xlsx一样,过去它工作得很好。(确切地说是在午餐休息时离开,回来后重新运行,没有任何更改)我想知道是否是我如何将excel表附加到我的电子邮件中的。有人知道这是怎么回事吗?谢谢

msg = MIMEMultipart()
sender='email@email.org'
recipients='email@recipient.org'
server=smtplib.SMTP('mail.server.lan')

msg['Subject']='Quarterly Summary'
msg['From']=sender
msg['To']=recipients



filename = r'C:\Users\user.chad\Quarterly\project\output\MyData.xlsx'
attachment = open(r'C:\Users\user.chad\Quarterly\project\output\MyData.xlsx', 'rb')
xlsx = MIMEBase('application','vnd.openxmlformats-officedocument.spreadsheetml.sheet')
xlsx.set_payload(attachment.read())

encoders.encode_base64(xlsx)
xlsx.add_header('Content-Dispolsition', 'attachment', filename=filename)
msg.attach(xlsx)

server.sendmail(sender, recipients, msg.as_string())
server.quit()
attachment.close()
请记录在案:

xlsx.add_header('Content-Dispolsition', 'attachment', filename=filename)
应该是

xlsx.add_header('Content-Disposition', 'attachment', filename=filename)

这是添加带有text/html内容的附件的示例

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

message = MIMEMultipart()

# add text
message.attach(
    MIMEText(
        content,
        'html',
        'utf-8'
        )
    )

# add attachment
attachment = MIMEBase('application', "octet-stream")
# open a file to attach
attachment.set_payload(open(filepath, "rb").read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment; filename="%s"' % self.filename )
message.attach(attachment)


server.sendmail(SENDER, receivers, message.as_string())

你确定这是内容分发吗?我有这样的东西:用open(attachment,“rb”)作为attache:part=MIMEApplication(attach.read(),Name=os.path.basename(attachment))part['Content-Disposition']='attachment;filename=“{}”格式(os.path.basename(附件))msg.attach(part)@E.Serra duuude。拼写错误。非常感谢。如果你把这个作为一个答案,我会相信你。没问题,伙计,很乐意帮忙