首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过电子邮件python发送损坏的文件

通过电子邮件python发送损坏的文件
EN

Stack Overflow用户
提问于 2019-07-10 20:20:40
回答 1查看 694关注 0票数 0

我使用以下代码将excel电子表格作为附件发送:

代码语言:javascript
复制
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”。验证文件没有损坏,并且文件扩展名是否与文件的格式匹配。

为什么我要得到这个错误,我如何纠正这个错误?

EN

回答 1

Stack Overflow用户

发布于 2019-07-10 21:40:14

您必须以bytes模式打开文件

代码语言:javascript
复制
with open(..., 'rb') as f:

text模式下,它转换用于"new line"的字节,最后发送不正确的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56978075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档