Отправить список на электронную почту HTML - PullRequest
0 голосов
/ 13 мая 2019

В настоящее время я работаю с документом электронной почты в формате 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()

Я ценю всю помощь.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Мне кажется, что вы пытаетесь использовать jinja2 синтакс, не зная об этом.Вы можете либо следовать «Введение jinja2», чтобы включить его в свой код, либо просто добавить 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)
0 голосов
/ 13 мая 2019

Как упоминалось в noamyg, кажется, вы хотите использовать шаблон стиля jinja в вашей переменной html, не используя пакет.

Из документации jinja2 .

from jinja2 import Template
template = Template('Hello {{ name }}!')
template.render(name='John Doe')
> 'Hello John Doe!'

Итак, для примера импортируйте jinja2, используйте строку html в качестве шаблона и визуализируйте ее с помощью переменной articles.

...