【问题标题】:HTML email appears as plain text?HTML 电子邮件显示为纯文本?
【发布时间】:2015-09-23 19:09:11
【问题描述】:

我正在使用 Python 框架 Flask 发送带有以下代码的 HTML 电子邮件:

HTML 电子邮件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Email</title>
</head>
<body>
    <h1>This is a heading</h1>
    <p>This is a paragraph</p>
</body>
</html>

Flask(使用 Flask-Mail):

html = render_template('email/activate.html', confirmURL=confirmURL)
        msg = Message('Please confirm your email', sender='email@gmail.com', recipients=[email])
        msg.body = html
        mail.send(msg)

我保持基本以测试电子邮件是否正确显示。我将电子邮件发送到 Gmail 和 Outlook 帐户,但两者似乎都将 HTML 显示为纯文本。我尝试使用不同的 HTML sn-ps 并出现相同的结果。我不确定这是我的代码、我的电子邮件帐户还是 Flask 的问题。

提前致谢。

【问题讨论】:

标签: python html email flask


【解决方案1】:

我自己发现问题是这样的:

之前:

page = render_template('email/activate.html', confirmURL=confirmURL)
msg = Message('Please confirm your email', sender='pavsidhu98@gmail.com', recipients=[email])
msg.body(page)
mail.send(msg)

之后:

page = render_template('email/activate.html', confirmURL=confirmURL)
msg = Message('Please confirm your email', html=page, sender='pavsidhu98@gmail.com', recipients=[email])
mail.send(msg)

因此,不要将 HTML 作为 msg.body(page) 放入电子邮件中,而是将其作为 Message() 的参数放入,如下所示:html=page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 2011-07-08
    • 1970-01-01
    • 2023-04-01
    • 2014-09-20
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多