2012-01-02 1 views
0

По какой-то причине следующий код не задает поле Subject правильно и, конечно же, не отображает его в HTML ... т. Е. Теги исчезают при получении электронной почты.python smtp не задает тему/html

Спасибо!

def sendEmail (self,remove): 

     message = """From: From Postmaster <%s> 
     To: To Person <%s> 
     MIME-Version: 1.0 
     Content-type: text/html 
     Subject: blahblah 
     <b>This is HTML message.</b> 
     <h1>The following email addresses have been removed</h1> 
     %s 
     """ %(self.sender,self.receivers,remove) 

     smtpObj = smtplib.SMTP('localhost') 
     smtpObj.sendmail(self.sender, self.receivers, message)   
     print "Successfully sent email" 
+2

Там должна быть пустая строка между заголовками и телом сообщения. Есть ли причина, по которой вы ее не включили? Это имеет значение для вашей проблемы? – SingleNegationElimination

ответ

1

MIME имеет определенные правила для того, как пробельный обрабатываются в своих заголовках. В частности, строки, начинающиеся с пробелов, рассматриваются как строки продолжения для предыдущего заголовка. В вашем примере, поскольку каждая строка (после первой) начинается с пробела, все содержимое будет рассматриваться как значение заголовка From. Кроме того, поскольку @TokenMacGuy указал, что MIME требует пустой строки между заголовками и полезной нагрузкой сообщения. Если вы переформатируете свое сообщение, следует интерпретировать его правильно:

message = """From: From Postmaster <%s> 
To: To Person <%s> 
MIME-Version: 1.0 
Content-type: text/html 
Subject: blahblah 

<b>This is HTML message.</b> 
<h1>The following email addresses have been removed</h1> 
%s 
""" %(self.sender,self.receivers,remove) 

Необходимо решить проблемы, которые вы видите.

В качестве альтернативы, вы можете использовать email пакет и избежать управления формат сообщения самостоятельно:

import email.mime.text 

message = """ 
<b>This is HTML message.</b> 
<h1>The following email addresses have been removed</h1> 
%s 
""" % remove 
message = email.mime.text.MIMEText(message, 'html') 
message['From'] = 'From Postmaster <%s>' % sender 
message['To'] = 'To Person <%s>' % receivers[0] 
message['Subject'] = 'blahblah' 
Смежные вопросы