2017-12-13 17 views
0

私はPythonのemailパッケージ(素晴らしいです!!)を使って電子メールを作成しています。Mimeメールで必要なヘッダーのみをエンコードする方法は?

email.Headerを使用して、件名のような奇妙な文字(アクセントなど)を持つヘッダーをエンコードする方が良いことがわかりました。そうするには

は、私は非常に簡単である、次のことをやっている:

Header(value, 'UTF-8').encode() 

それは素晴らしい作品が、それはまた、必要ではないが

リク、エンコーディングを必要としないフィールドをエンコード私はそのような場合には、それはかなり役に立たない見つけ

X-Mailer: =?utf-8?q?My_Service?= 

なり

X-Mailer: My Service 

私の質問ヘッダーが有用なときにのみエンコードする方法はありますか?

私はvalue.encode/decode()と試してみることを考えましたが、例外でHeader().encode()関数を呼び出しましたが、これを行うにはもっとクリーンな方法が必要ですか?

答えて

0

これまでのところ私のベストアプローチがあります。

ascii文字セットを使用して文字列をデコードしようとしています。それが失敗した場合、我々はそれがそうでない場合は、Header.encode()を使用してエンコードしているとして、我々はそれを残す:How to check if a string in Python is in ASCII?

def encode_header(value): 
    try: 
     value.decode('ascii') 
     return value 
    except UnicodeDecodeError: 
     return Header(value, 'UTF-8').encode() 

は、私は、このソリューションには、この記事のおかげで来ました

関連する問題