MIME Multipart 在 Python 3 上作为 "noname" 发送
MIME Multipart being sent as "noname" on Python 3
我在 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 内容和附件的电子邮件,而是发送了一封空白电子邮件,其中包含一个名为 "noname" 的无扩展名文件,我认为其中包含我想发送的内容.
我尝试删除附件部分并只保留 HTML 内容,但仍然没有交易。
为什么会发生这种情况,我该如何解决?
(我把主题、发件人和收件人放了两次的原因是,当我第一次使用它时,由于某种原因它不能工作,而且在它开始工作后我再也没有将它从那里删除。)
我通过重读 email documentation 并替换
弄明白了
msg = MIMEMultipart(
From = "Name <mail@from.com>",
To = "Name <mail@to.com>",
Date=formatdate(localtime=True),
Subject="SUBJECT")
和
msg = MIMEMultipart('alternative')
我在 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 内容和附件的电子邮件,而是发送了一封空白电子邮件,其中包含一个名为 "noname" 的无扩展名文件,我认为其中包含我想发送的内容.
我尝试删除附件部分并只保留 HTML 内容,但仍然没有交易。
为什么会发生这种情况,我该如何解决?
(我把主题、发件人和收件人放了两次的原因是,当我第一次使用它时,由于某种原因它不能工作,而且在它开始工作后我再也没有将它从那里删除。)
我通过重读 email documentation 并替换
弄明白了msg = MIMEMultipart(
From = "Name <mail@from.com>",
To = "Name <mail@to.com>",
Date=formatdate(localtime=True),
Subject="SUBJECT")
和
msg = MIMEMultipart('alternative')