Я использую SMTPLib для отправки электронного письма на аккаунт Gmail - PullRequest
0 голосов
/ 29 августа 2018

У меня есть два сообщения. Одно из них - HTML-сообщение, а другое - простое текстовое сообщение. Я присоединяю их оба к переменной MIMEMultipart (tmessage), но когда электронное письмо получает send, я вижу только второе прикрепленное сообщение в моем почтовом ящике. Я не могу понять, почему ... Вот мой код

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
host='smtp.gmail.com'
port=587
message="<h1>Hey i have received a 3rd  email message using Python</h1>"
userName='teaching807@gmail.com'
password='teaching807299'
connection = smtplib.SMTP(host,port)

connection.ehlo()
connection.starttls()
_from=userName
_to=userName
connection.login(userName,password)

tmessage = MIMEMultipart("alternative")
tmessage['Subject']="Html Message"
tmessage['From']=_from
tmessage['To']=_to
plain_message = "This is a plain message"
html_message="""<html><body><h1>Students Marks</h1><p>These are the students 
Marks</p></body></html>"""
msg1=MIMEText(html_message,'html')
msg2=MIMEText(plain_message,'plain')
tmessage.attach(msg1)
tmessage.attach(msg2)

connection.sendmail(_from,_to,tmessage.as_string())
connection.quit()

В папке "Входящие" виден только msg2

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Добавляя две части, вы предлагаете альтернативы. Из документов Python :

Согласно RFC 2046, последняя часть составного сообщения, в данном случае это HTML-сообщение, является лучшей и предпочтительной.

Вы добавляете простой текст последним, делая его предпочтительным. Вы никогда не увидите ни простой, ни HTML.

0 голосов
/ 29 августа 2018

Согласно нижней части этой документации, тип "альтернатива" - это просто альтернативный простой текст, когда HTML по какой-либо причине не поддерживается.

Вы просматриваете только одно сообщение, потому что ваша учетная запись электронной почты / браузер поддерживает HTML. Вы увидите только одно письмо, потому что отправлено только одно. То, что вы просматриваете, зависит от того, какой тип данных поддерживает ваша электронная почта / браузер.

0 голосов
/ 29 августа 2018

попробуйте удалить "альтернативу" из tmessage, у меня это работает в Outlook.

tmessage = MIMEMultipart()
...