2017-10-07 36 views
0

我試圖多個附件附加到email.mime.multipart對象:蟒MIME附着多個附件的多部分消息

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 = '[email protected]' 
MAIL_PASSWORD = 'xxx' 
MAIL_REPICIENTS = ['[email protected]'] 

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")) 
+0

嗨thx,是的作品thx!但是,如果只有1個附件可以連接,爲什麼它被稱爲多部分?我的方法似乎符合我在文檔中找到的內容:https://docs.python.org/3.4/library/email.message.html#email.message.Message.attach –

+1

它被稱爲多方,因爲您可以有多個所附消息的版本,例如:純文本和html。最後附加的消息被假定爲首選。所以當你附加多個html消息時,它所做的只是顯示最後一個。 – Steampunkery