Python SMTP не устанавливает тему / HTML - PullRequest
0 голосов
/ 03 января 2012

по какой-то причине следующий код не устанавливает поле 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 ]

1 голос
/ 05 января 2012

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'
0 голосов
/ 03 января 2012

Из документов: «Вот пример того, как создать сообщение HTML с альтернативной версией в виде простого текста:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...