django - 电子邮件正文显示 html 代码代替 django 中的模板
问题描述
我在 django 中使用 smtp 发送电子邮件,但它显示了它的 HTML 代码。
这是我的 Django 视图和模板
视图.py
current_site = get_current_site(request)
mail_subject = 'Activate Your Account'
mail_message = render_to_string('mail_body.html', {
'user' : user,
'domain' : current_site.domain,
'uid' : urlsafe_base64_encode(force_bytes(user.pk)),
'token' : default_token_generator.make_token(user)
})
mail_to = email,
email = EmailMessage( mail_subject, mail_message, to = mail_to )
email.send()
mail_body.html
<div>
{% autoescape off %}
<b class="text-center">Hello {{ user.username }}</b><br>
Please click on the link below to verify your email address and complete your registration.
<a class="btn btn-primary btn-block" href="http://{{ domain }}{% url 'auth' uidb64=uid token=token
%}" role="button" target="_blank">Verify</a>
<hr />
<br />
If you think, it's not you, then just ignore this email.
{% endautoescape %}
</div>
解决方案
根据文档:https ://docs.djangoproject.com/en/3.1/topics/email/
您可以使用函数 send_mail 作为 EmailMessage 对象的包装器,并且 send_mail 函数允许您设置 html_message:
from django.core.mail import send_mail
send_mail(mail_subject, '', 'you@example.com', [mail_to], html_message=mail_message)
推荐阅读
- python-3.x - 是否有算法将图像细分为较小的三角形以进行opengl渲染?
- amazon-web-services - 我可以使用单独的云存储并将其连接到 mapbox 吗?
- ios - Firebase:保留在 observeSingleEvent 中分配的值
- c - c:具有 nanopb (protobuf) 的重复字段的默认值
- android - 未解决的参考:在 gradle 中添加必要的工具并更新到 kotlin 最新版本后进行 Parcelize
- c++ - 示例 Shell 应用程序显示的 V8“分段错误(核心转储)”错误
- java - REST API:URL 中的 JSON 对象以获取自定义 JSON
- akka - 类型为 2.6.3 的 akka 的日志记录问题
- python - 为什么我需要一个“返回”和一个新变量?
- ios - Fabric crashlytics 显示错误:致命异常:NSInternalInconsistencyException。在 IOS 应用程序中