首页 文章

Python / Django:不呈现电子邮件模板 . 显示html标签,不转换实体

提问于
浏览
1

我正在使用模板发送电子邮件,但模板未正确呈现 . 它显示了html标记,并且不呈现特殊字符 .

它确实渲染了上下文,例如,如果我提供了“username”:some_name然后它会在我{}时正确显示用户名

my_template.html:

<p>hello &oslash;</p>

在视图中:

from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.template import Context

t = get_template('my_template.html')
msg = EmailMultiAlternatives("hi", t.render(Context({})), from_email, [user.email])
msg.send()

收到的电子邮件显示p标签显示 . 此外,实体看起来与模板中写的完全相同 . 我只是使用.txt文件,但我需要渲染特殊字符 . 如果我直接在txt文件中写入它们,我在尝试发送它时会出错 .

我也尝试过使用django的send_mail() . 还要在模板中添加html标记 . 结果相同 .

1 回答

  • 1

    多部分/替代电子邮件包含两部分:

    • 电子邮件的纯文本版本

    • 电子邮件的html版本

    所以在这里你只需要做#2并添加html部分!

    按照这里的例子... https://docs.djangoproject.com/en/dev/topics/email/#sending-alternative-content-types ...你可能只需要在msg.send()之前添加这样的一行 .

    msg.attach_alternative(t.render(Context({})), "text/html")
    

相关问题