我使用以下代码将excel电子表格作为附件发送:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
def send_email(subject, mail_body, attachment= None):
to_addr = input("Enter the recipient's email address: ")
from_addr = 'cloudops@noreply.company.com'
content = mail_body
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
body = MIMEText(content, 'html')
msg.attach(body)
server = smtplib.SMTP('smtpout.us.cworld.company.com', 25)
with open(attachment, 'r') as f:
part = MIMEApplication(f.read(), Name=basename(attachment))
part['Content-Disposition'] = 'attachment; filename="{}"'.format(basename(attachment))
msg.attach(part)
try:
server.send_message(msg, from_addr=from_addr, to_addrs=to_addr)
print(f"Email was sent to: {to_addr}")
except Exception as e:
print(f"Exception: {e}")
print("Email was not sent.")当我打开文件时,我收到一条信息,上面写着:
因为文件格式或扩展名无效,Excel无法打开文件“成本分配-201906.xlsx”。验证文件没有损坏,并且文件扩展名是否与文件的格式匹配。

为什么我要得到这个错误,我如何纠正这个错误?
发布于 2019-07-10 21:40:14
您必须以bytes模式打开文件
with open(..., 'rb') as f:在text模式下,它转换用于"new line"的字节,最后发送不正确的数据。
https://stackoverflow.com/questions/56978075
复制相似问题