将列表发送到 HTML 电子邮件
Send a list to HTML Email
我目前正在处理 HTML 电子邮件文档。现在我想展示一个列表,其中包含来自我的数据库的信息。如何在 HTML 电子邮件中显示列表?我试过以下方法:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
articles = ['hello', 2, 5, 'bye']
me = "email@gmail.com"
you = "email@gmail.com"
subject = 'something'
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = me
msg['To'] = you
html = """\
{% for i in {articles} %}
<p> {{ i }} </p>
{% endfor %}
""".format(articles)
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login("email@gmail.com", "password")
server.sendmail(me, you, msg.as_string())
server.quit()
感谢所有帮助。提前致谢。
在我看来,您似乎在不知情的情况下尝试使用 jinja2 语法。
您可以按照 jinja2 Introduction 将其包含到您的代码中,或者只需使用一个简单的循环将 articles
附加到您的 html 字符串,例如:
articles = ['hello', 2, 5, 'bye']
html = """\
<html>
<body>
<table>
<tbody>
{}
</tbody>
</table>
</body>
</html>
"""
rows = ""
for article in articles:
rows = rows + "<tr><td>"+str(article)+"<td></tr>"
html = html.format(rows)
正如 noamyg 提到的,您似乎想在 html
变量中使用 jinja stlye 模板,而不使用包。
来自 jinja2 文档。
from jinja2 import Template
template = Template('Hello {{ name }}!')
template.render(name='John Doe')
> 'Hello John Doe!'
因此对于您的示例导入 jinja2
,使用您的 html
字符串作为模板并使用您的 articles
变量呈现它。
我目前正在处理 HTML 电子邮件文档。现在我想展示一个列表,其中包含来自我的数据库的信息。如何在 HTML 电子邮件中显示列表?我试过以下方法:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
articles = ['hello', 2, 5, 'bye']
me = "email@gmail.com"
you = "email@gmail.com"
subject = 'something'
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = me
msg['To'] = you
html = """\
{% for i in {articles} %}
<p> {{ i }} </p>
{% endfor %}
""".format(articles)
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login("email@gmail.com", "password")
server.sendmail(me, you, msg.as_string())
server.quit()
感谢所有帮助。提前致谢。
在我看来,您似乎在不知情的情况下尝试使用 jinja2 语法。
您可以按照 jinja2 Introduction 将其包含到您的代码中,或者只需使用一个简单的循环将 articles
附加到您的 html 字符串,例如:
articles = ['hello', 2, 5, 'bye']
html = """\
<html>
<body>
<table>
<tbody>
{}
</tbody>
</table>
</body>
</html>
"""
rows = ""
for article in articles:
rows = rows + "<tr><td>"+str(article)+"<td></tr>"
html = html.format(rows)
正如 noamyg 提到的,您似乎想在 html
变量中使用 jinja stlye 模板,而不使用包。
来自 jinja2 文档。
from jinja2 import Template
template = Template('Hello {{ name }}!')
template.render(name='John Doe')
> 'Hello John Doe!'
因此对于您的示例导入 jinja2
,使用您的 html
字符串作为模板并使用您的 articles
变量呈现它。