首页 > 解决方案 > Django python发送带有非英文字符的电子邮件

问题描述

我尝试发送带有俄语字符的电子邮件,但作为输出我得到

主题: (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)

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

标签: pythondjangopython-3.x

解决方案


尝试:

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

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

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

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

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

#encoding:utf8


资料来源:字符串值前面的“u”符号是什么意思?


推荐阅读