将xls文件附加到电子邮件并通过python

时间:2018-08-15 15:49:53

标签: python

我有一个xls文件,其中没有多少图像和图形。 我想附加此文件并发送至电子邮件。 下面是我的代码:

def create_message(report):
    message = MIMEMultipart()
    message['From'] = msettings.EMAILS_SEND_FROM_NAME
    message['To'] = msettings.EMAILS_SEND_TO
    message['Subject'] = msettings.EMAILS_SUBJECT

    with open(report, "r") as file:
        payload = MIMEApplication(file.read(), Name=os.path.basename(report))
        content = 'attachment; filename="{}"'.format(os.path.basename(report))
        payload['Content-Disposition'] = content
        message.attach(payload)

但是我收到以下错误消息

  message = create_message(file)
  line 148, in create_message
    payload = MIMEApplication(file.read(), Name=os.path.basename(report))
  File "python-3.4.3\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 732: character maps to <undefined>

我怀疑我的xls文件的编码不受支持。 如何在不丢失xls文件任何信息的情况下,将包含图像,图形和许多格式的xls文件附加为附件?

1 个答案:

答案 0 :(得分:-1)

我对yagmail库感到很幸运,它不仅可以大大简化您的代码,而且我使用附件也没有问题。