python MIME将多个附件附加到多部分邮件

时间:2017-10-07 13:18:21

标签: python mime

我正在尝试将多个附件附加到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 个答案:

答案 0 :(得分: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"))