MIME Multipart在Python 3上作为“noname”发送

问题描述:

我有一个在Python 2.7上编写的脚本,它将发送一封电子邮件。下面的代码完美工作:MIME Multipart在Python 3上作为“noname”发送

msg = MIMEMultipart(
    From = "Name <[email protected]>", 
    To = "Name <[email protected]>", 
    Date=formatdate(localtime=True), 
    Subject="SUBJECT") 
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'] = "Name <[email protected]>" 
msg['To'] = "Name <[email protected]>" 

server.sendmail(FROMADDR, ["[email protected]"], msg.as_string()) 

我将脚本转换为Python 3.5,脚本的所有其他部分完全按照预期工作。但是,上述内容并没有:不是用HTML Stuff和附件发送我的电子邮件,而是发送一封空白的电子邮件,其中包含一个名为“noname”的扩展名文件,我认为它有我想发送的内容。

我试图删除附件部分,只保留HTML的东西,但仍然没有交易。

为什么会发生这种情况,我该如何解决?

(我之所以把主题,发件人,以及两次的是,当我用它仅在第一次也不会出于某种原因,我从来没有删除它从那里后,它开始工作。)

我想通了由rerereading的email documentation

msg = MIMEMultipart('alternative') 
更换

msg = MIMEMultipart(
    From = "Name <[email protected]>", 
    To = "Name <[email protected]>", 
    Date=formatdate(localtime=True), 
    Subject="SUBJECT")