2012-01-02 12 views
0

何らかの理由で、次のコードでSubjectフィールドが正しく設定されず、HTMLで電子メールが表示されません。つまり、電子メールを受信したときにandタグはなくなります。python smtp subject/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'