Python发送的MIME电子邮件附件未显示在mail.live中

时间:2016-03-10 19:53:21

标签: python python-2.7 email python-3.x windows-live-mail

我有一个Python 3脚本,它使用MIMEMultipart发送一封电子邮件,其中包含已附加的.xlsx文件。我曾经在Py2上使用相同的脚本发送相同的生成文件,唯一的区别是Py2脚本从MySQL收集信息以创建.xlsx而Py3脚本使用PostgreSQL。

msg = MIMEMultipart('alternative')
msg.attach(MIMEText("""HTML stuff""", 'html'))

with open(analysis_file, "rb") as fil:
  msg.attach(MIMEApplication(
                    fil.read(),
                    Content_Disposition='attachment; filename="%s"' % os.path.basename(analysis_file),
                    Name=os.path.basename(analysis_file)
                ))

msg['Subject'] = "SUBJECT"
msg['From']="Me <me@me.com>"
msg['To']= "You <you@you.com>"

server.sendmail(FROMADDR, ["you@you.com"], msg.as_string())

然而,当我切换到脚本的Py3版本时,附件停止显示在Microsoft的mail.live上。显示消息有附件的回形针符号仍然显示,但我找不到它。

- 编辑:

如果我设置自动转发到Gmail帐户,.xlsx附件通常会显示在那里;但是,如果我手动转发,则不会。

2 个答案:

答案 0 :(得分:5)

更改

msg = MIMEMultipart('alternative')

msg = MIMEMultipart('html')

修好了。

答案 1 :(得分:0)

帮我一个忙,测试它是否适用于yagmail。对于做HTML /附件的事情,我认为它确实很有用:默认是用HTML发送内容,附件可以通过指向路径来完成。

所有代码:

import yagmail
yag = yagmail.SMTP('me@me.com', 'password')
yag.send("you@you.com", "SUBJECT", analysis_file)

send中的第三个字段是内容,可以是字符串列表,也可以只是字符串。如果字符串可以作为文件加载,它将被简单地附加。

有关详细信息,请查看github页面。请注意,我是开发人员/维护者。