3

Python(Django)からメールを送信しています。メールのホストは「smtp.gmail.com」です。localhostを使用すると、電子メールの件名に特殊文字を使用できます。ただし、サーバー(webfaction)から試行しているため、「UnicodeDecodeError:'ascii' codec ca n't decode byte ...」というエラーが表示されます。電子メールテンプレートで16進コードを使用していますが、件名(翻訳されていません)。何をすべきか?

# coding=UTF-8
...

subject = "æøå"
c = {}
t_html = loader.get_template(template_html)
t_text = loader.get_template(template_txt) 
e = EmailMultiAlternatives(subject, t_text.render(Context(c)), from_email, [to_email])
e.attach_alternative(t_html.render(Context(c)), "text/html")
e.send() 
4

1 に答える 1

5

uPython 2を使用している場合は、文字列の前に:を付けることをお勧めします。

subject = u"æøå"

(「マジックコメント」はそれを自動的に処理することになっていることは知ってcodingいますが、経験から、常に機能するとは限りません)

更新:将来の参照のために、本番環境が開発で使用されるのと同じエンコーディングをサポートしていることを確認することも重要です。(どこでもサポートされています)で問題ないはずUTF-8ですが、Windows(Cp1252)でソースファイルを編集してからUNIXサーバーにデプロイすると、の存在に関係なく、Pythonインタープリターがそれらを読み取れない場合がありcodingます。

于 2012-12-27T08:14:44.320 に答える