2014-08-28 1 views
3

Я отправляю электронное письмо в учетную запись gmail с помощью Python. Это код, я используюGmail отображает HTML и текстовые и HTML-части электронной почты

msg = email.mime.multipart.MIMEMultipart() 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 
msg['Subject'] = 'HTML test' 
msg_html = email.mime.text.MIMEText('<html><head></head><body><b>This is HTML</b></body></html>', 'html') 
msg_txt = email.mime.text.MIMEText('This is text','plain') 
msg.attach(msg_html) 
msg.attach(msg_txt) 
#SNIP SMTP connection code 
smtpConn.sendmail('[email protected]', '[email protected]', msg.as_string()) 

При просмотре этого письма в Gmail как HTML и текст версии представлены следующим образом:

Это HTML

Это текст

Должно быть либо отображение текста, либо html, что вызывает подобное поведение.

+0

Посмотрите на содержимое, которое вы отправляете по почте ... Это вопрос о том, что вы отправляете, а не о том, как gmail выполняет рендеринг – ControlAltDel

ответ

7

Сообщение отправляется как multipart/mixed (как this is the default), когда его необходимо отправить как multipart/alternative. mixed означает, что каждая часть содержит различный контент, и все должно отображаться, а alternative означает, что все части имеют одинаковый контент в разных форматах и ​​должны отображаться только одни.

msg = email.mime.multipart.MIMEMultipart("alternative") 

Кроме того, вы должны поместить детали в порядке возрастания, т. Е. Текст перед HTML. MUA (GMail в этом случае) отобразит последнюю часть, которую он знает, как отображать.

См. Wikipedia article on MIME за хорошее введение в форматирование сообщений MIME.

 Смежные вопросы

  • Нет связанных вопросов^_^