Django python发送带有非英语字符的电子邮件

时间:2018-09-25 18:33:55

标签: python django python-3.x

我尝试发送带有俄文的电子邮件,但得到的输出是

  

主题:   (b'\ xd0 \ xaf \ xd0 \ x9a \ xd0 \ xbb \ xd1 \ x8e \ xd1 \ x87 \ xd0 \ xbd \ xd0 \ xb8 \ xd0 \ xba-   \ xd0 \ xbf \ xd0 \ xbe \ xd1 \ x81 \ xd1 \ x82 \ xd1 \ x83 \ xd0 \ xbf \ xd0 \ xb8 \ xd0 \ xbb \ xd0 \ xb0   \ xd0 \ xbe \ xd0 \ xbf \ xd0 \ xbb \ xd0 \ xb0 \ xd1 \ x82 \ xd0 \ xb0',27)

这是我的代码:

subject = 'поступила оплата'
body = 'email body'
    send_mail(
                subject
                body,
                'from@gmail.com',
                ["to_email@test.com"],
                fail_silently=False,
            )

我尝试过

subject.encode('utf8') 
subject.decode('utf8')
subject.encode('utf8').decode('utf8')
codecs.utf_8_encode(subject)

但是没有帮助。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

尝试:

subject = u'поступила оплата'

字符串前面的u表示该字符串已被表示为unicode。 Python中字符串之前的字母称为“字符串编码声明”。 Unicode是一种表示比普通ASCII所能管理的字符更多的字符的方法。

您还可以像这样转换为unicode:

subject = unicode('поступила оплата')

顺便说一句,您可能还需要在脚本的开头声明编码,如下所示:

#encoding:utf8


来源:What does the 'u' symbol mean in front of string values?