我正在使用 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/