MIME Multipart被发送为" noname"在Python 3上

时间:2016-03-08 17:20:24

标签: python python-2.7 email python-3.x mime

我在Python 2.7上创建了一个可以发送电子邮件的脚本。以下代码完美地适用于它:

msg = MIMEMultipart(
    From = "Name <mail@from.com>",
    To = "Name <mail@to.com>",
    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 <mail@from.com>"
msg['To'] = "Name <mail@to.com>"

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

我将脚本转换为Python 3.5,并且脚本的所有其他部分完全按预期工作。但是,上述内容并非如此:它不会向我的电子邮件发送HTML Stuff和附件,而是发送一封空白电子邮件,其中包含名为&#34; noname&#34;的无扩展名文件。我认为有我想发送的东西。

我尝试删除附件部分并仅保留HTML内容,但仍然没有处理。

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

(我之所以选择Subject,From和To两次,是因为当我第一次使用它时,由于某些原因它不会起作用,而且在它开始工作后我从未将它从那里移除。)< / p>

1 个答案:

答案 0 :(得分:0)

我通过重新阅读email documentation并替换

来解决这个问题
msg = MIMEMultipart(
    From = "Name <mail@from.com>",
    To = "Name <mail@to.com>",
    Date=formatdate(localtime=True),
    Subject="SUBJECT")

msg = MIMEMultipart('alternative')