密码重置流中的Django电子邮件:不接受特殊字符

密码重置流中的Django电子邮件:不接受特殊字符,django,email,character-encoding,Django,Email,Character Encoding,我使用的是Django重置密码流,它向用户发送一封电子邮件,其中包含输入新密码的链接。此电子邮件的模板是password\u reset\u email.html。我已将此模板复制到我自己的项目中,并对其进行了自定义。但是,我不能使用特殊字符,例如ø。通常,我使用如下实体 ø or ø 但它们不起作用——它们只是直接以书面形式出现。我没有设置settings.DEFAULT\u字符集,因此它应该是utf-8。在我的.py文件中,我编写了 # codin

我使用的是Django重置密码流,它向用户发送一封电子邮件,其中包含输入新密码的链接。此电子邮件的模板是password\u reset\u email.html。我已将此模板复制到我自己的项目中,并对其进行了自定义。但是,我不能使用特殊字符,例如ø。通常,我使用如下实体

ø or ø 
但它们不起作用——它们只是直接以书面形式出现。我没有设置settings.DEFAULT\u字符集,因此它应该是utf-8。在我的.py文件中,我编写了

# coding=UTF-8
函数PasswordResetForm执行以下操作:

email_template_name='registration/password_reset_email.html'
...
t = loader.get_template(email_template_name)
...

c = {'email': user.email,
      ...        
       }
send_mail("subject line",
            t.render(Context(c)), from_email, [user.email])
我尝试过将模板改为.txt而不是.py,并使用escape

编辑:我得到的错误是:“utf8”编解码器无法解码字节


编辑。我意识到问题在于它根本没有渲染。这不仅仅是一个特殊的问题。所以,我要问一个新问题。

您的问题可能与混合字符串和unicode序列有关。要强制表单文件中的所有字符串使用unicode,请尝试在顶部添加以下导入:

from __future__ import unicode_literals

问题在于渲染,而不仅仅是特殊字符。我从来没有收到过去工作的邮件,但我正在使用EmailMultiAlternatives.send

答复如下:


不是很熟悉Python,但是如果你想用æå发送电子邮件,你必须正确编码你的邮件头。如果您尝试简单地显示模板,æå是否正确显示?如果我直接在Chrome中打开模板,则æ正确显示。似乎我可以在发送电子邮件时包含标题信息。但是编码应该是什么,然后如何在电子邮件模板中写入字符?我不必使用html。send_mail是标准的python/django函数吗?您的数据库可能没有使用unicode字符集吗?我的数据库很好。这是我直接写进模板的文本。发送邮件是标准的:从django.core.mail导入发送邮件