在Python中使用HTML发送电子邮件

时间:2014-07-23 07:45:02

标签: python html email

我正在尝试使用python发送电子邮件。我正在尝试以HTML格式格式化我的电子邮件。以下是代码: -

sender = 'dummy@dummy.com'
receivers = ['abc@abc.com']
message = message = """From: team <team@temp.com>
To: To Person <me@me.com>
MIME-Version: 1.0
Content-type: text/html
Subject: Daily Report 
<html>
<table>
Report
<% for i in rows: %>
    <tr>
        <td> <%= rows[0][1] %>
    </tr>
<% end %>
</table>

<b>This is HTML message.</b>
<h1>This is headline.</h1>
</html>
"""
smtpObj = smtplib.SMTP('SMTP mailer')
smtpObj.sendmail(sender, receivers, message)

我是根据某些条件从数据库中提取行并将其存储在&#34;行&#34;变量。我试图根据返回的行数循环HTML表创建。

每当我发送电子邮件时,它都不会识别我写的for循环。 它确实标识了&#34;这是HTML消息&#34;大胆的形式和&#34;这是标题&#34; H1格式

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您想使用template engine来创建HTML。对于Python,您使用的消息字符串只是一个字符串,没有别的。 `&lt;%for i in rows:%&gt;'就是这个文本,Python不会对它进行任何处理。

根据RFC2822

,您的邮件消息格式不正确
  • 您必须使用CRLF('\ r \ n')作为换行符分隔符,LF(\ n')只是非法的
  • 标题和正文必须用CRLF(即一个空行)分隔。

为了使用Python发送HTML格式的消息,我建议您使用email.mime中的功能,c.f。 How to send an email with style in Python3?