python - HTML 电子邮件显示为纯文本?

标签 python html email flask

我正在使用 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 片段,但出现了相同的结果。我不确定这是否是我的代码、我的电子邮件帐户或 Flask 的问题。

提前致谢。

最佳答案

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

之前:

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

关于python - HTML 电子邮件显示为纯文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965181/

相关文章:

html - 如何创建带有双白色底边框的输入?

java - 使用小时和分钟按日期过滤电子邮件

objective-c - 如何在 iOS 中将任何类型的文件附加到电子邮件

python - 用于 Python 主题建模的 LDA

html - css中父容器上的幻影像素

html - 为什么不定位: fixed add a footer on every page in print preview using media print css in Safari browser

php - 使用php基于mysql查询自动回复电子邮件

python - Python Pandas 中因子变量的最接近等价物

python - statsmodels OLS 在 python 中给出 TypeError

python - 从 WSGI 应用程序在服务器上启动一个长时间运行的进程