在 Python 中使用 HTML 发送电子邮件
Posted
技术标签:
【中文标题】在 Python 中使用 HTML 发送电子邮件【英文标题】:Using HTML in Python in sending an email 【发布时间】:2014-09-14 06:57:53 【问题描述】:我正在尝试使用 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)
我根据某些条件从数据库中获取行并将其存储在“rows”变量中。我正在尝试根据返回的行数循环创建 HTML 表。
每当我发送电子邮件时,它都无法识别我编写的 for 循环。 它确实以粗体形式识别“这是 HTML 消息”和以 H1 格式识别“这是标题”
我做错了什么?
【问题讨论】:
【参考方案1】:您想使用template engine 创建 HTML。对于 Python,您使用的消息字符串只是一个字符串,仅此而已。 `' 就是这个文本,Python 不对其进行任何处理。
您的邮件消息没有按照RFC2822正确格式化:
您必须使用 CRLF ('\r\n') 作为换行符,只有 LF (\n') 是非法的 标题和正文必须用 CRLF 分隔(即一个空行)。要使用 Python 发送 HTML 格式的消息,我建议您使用 email.mime
中的功能,c.f. How to send an email with style in Python3?
【讨论】:
好的。我会使用 Jinja2以上是关于在 Python 中使用 HTML 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章