Flask render_template()返回原始HTML,未处理

时间:2017-06-29 10:27:31

标签: python html email flask render

我正在使用烧瓶邮件,我想在邮件中插入呈现的HTML。

以下是代码:

控制器:

        msg = Message("test", sender='xxx@gmail.com', recipients=[user.get("email")])
        msg.body = render_template('/assets/views/emailing/notification.html', name=user.get("name"))
        mail.send(msg)

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello, World!</h1>
{% endif %}

</body>
</html>

所以我期待一个呈现的电子邮件,或者至少将html作为文本,但将键替换为值。

这是我得到的:

https://i.imgur.com/efDMyDM.png

有关正在发生的事情的任何线索?

1 个答案:

答案 0 :(得分:3)

在发送HTML电子邮件时,您需要设置html属性而不是body,如下所示:

html = render_template('/assets/views/emailing/notification.html', name=user.get("name"))
msg = Message("test", sender='xxx@gmail.com', recipients=[user.get("email")], html=html)
mail.send(msg)