python MIME将多个附件附加到多部分消息
Posted
技术标签:
【中文标题】python MIME将多个附件附加到多部分消息【英文标题】:python MIME attaching multiple attachments to a multipart message 【发布时间】:2018-03-19 03:18:08 【问题描述】:我正在尝试将多个附件附加到 email.mime.multipart
对象:
from smtplib import SMTP
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
message = MIMEMultipart('alternative')
message['Subject'] = 'test'
for i in range(10):
title="<h2></h2>".format(i)
message.attach(MIMEText(title,"html",_charset="utf-8"))
在这里我可以检查负载是否包含 10 个元素:message.get_payload()
我可以看到 10 个元素的列表,这似乎是正确的。
但是,当我使用以下代码发送电子邮件时:
MAIL_HOST = 'smtp.gmail.com:587'
MAIL_USER = 'xxx@gmail.com'
MAIL_PASSWORD = 'xxx'
MAIL_REPICIENTS = ['xxx@gmail.com']
smtp = SMTP(MAIL_HOST)
smtp.ehlo()
smtp.starttls()
smtp.login(MAIL_USER, MAIL_PASSWORD)
smtp.sendmail(MAIL_USER, MAIL_REPICIENTS, message.as_string())
smtp.close()
电子邮件仅包含列表的最后一个元素。
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:那是因为您要附加 10 条不同的消息。为什么要附加一条消息。将您的代码更改为:
from smtplib import SMTP
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
message = MIMEMultipart('alternative')
message['Subject'] = 'test'
html = ''
for i in range(10):
title="<h2></h2>".format(i)
html += title
message.attach(MIMEText(html,"html",_charset="utf-8"))
【讨论】:
嗨,谢谢,是的,谢谢!但是,如果只能附加 1 个附件,为什么还要将其称为 multipart 呢?我的方法似乎与我在文档中找到的一致:docs.python.org/3.4/library/… 之所以称为多方,是因为您可以附加多个版本的消息,例如:纯文本和html。假定最后附加的消息是首选消息。因此,当您附加多条 html 消息时,它所做的只是显示最后一条。以上是关于python MIME将多个附件附加到多部分消息的主要内容,如果未能解决你的问题,请参考以下文章
将 MIME 中的附加数据嵌入到电子邮件的 HTML 部分。未链接到附件