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

时间:2012-10-31 10:04:51

标签: django email character-encoding

我正在使用Django重置密码流,它会向用户发送一封电子邮件,其中包含一个输入新密码的链接。此电子邮件的模板是password_reset_email.html。我已将此模板复制到我自己的项目中并进行了自定义。但是,我无法使用特殊字符,例如ø。通常,我使用像

这样的实体
ø or ø 

但它们不起作用 - 它们只是直接显示为书面形式。我没有设置settings.DEFAULT_CHARSET所以它应该是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,并使用转义。

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

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

2 个答案:

答案 0 :(得分:0)

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

from __future__ import unicode_literals

答案 1 :(得分:0)

问题在于渲染,而不仅仅是特殊字符。我从未使用send_mail()工作,但使用的是EmailMultiAlternatives.send()

在这里回答:

Python/Django: Email template is not rendered. Shows html tags and doesn't convert entities