質問

次のコードがあります。

msgtxt = "é"

msg = MIMEText(msgtxt)
msg.set_charset('ISO-8859-1')
msg['Subject'] = "subject"
msg['From'] = "from@mail.com"
msg['To'] = "to@mail.com"
serv.sendmail("from@mail.com","to@mail.com", msg.as_string())

電子メールは、予想されるéの代わりにその体として到着します

私が試してみました :

msgtxt = "é".encode("ISO-8859-1")
msgtxt = u"é"
msgtxt = unicode("é", "ISO-8859-1")

すべて同じ結果が得られます。

これを機能させる方法は?

どんな助けも感謝しています。事前にありがとう、J。

役に立ちましたか?

解決

msgtxt = "é"
msg.set_charset('ISO-8859-1')

さて、このコードを含むソースファイルのエンコードは何ですか? UTF-8の場合、これは適切なデフォルトの選択です。 é 2バイトの文字列を提供します '\xc3\xa9', 、これは、ISO-8859-1と見なされると、 é.

テキストエディターが保存しているエンコードを心配することなく、ソースファイルで非ASCIIバイト文字列リテラルを使用したい場合は、文字列リテラルエスケープを使用します。

msgtxt = '\xE9'

他のヒント

# coding: utf-8        (or whatever you want to save your source file in)
msgtxt = u"é"
msg = MIMEText(msgtxt,_charset='ISO-8859-1')

なしで u テキストはソースエンコーディングに含まれます。 Unicode文字列として、MSGTXTは指定された文字セットでエンコードされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top