2017-07-04 12 views
0

私は、サポートアドレスに送信された電子メールを解析し、それをデータベースに保存するpythonスクリプトを持っています。データベースの挿入箇所にエラーが発生しました 文字列の値が正しくない: '\ xA3500 w ... thunderbirdで電子メールを表示すると、怒っている文字がポンド記号として表示されます。それは実際に送信者が意図したものです。しかし、生のemlファイルを見ると、ポンド記号があるべき場所は = A3500となります。 電子メールのヘッダーには、charset = "iso-8859-1"と表示されています。送信された電子メールは実際には仕様に準拠していないと思われますが、エラーを出すのではなく、少なくとも不適合メールを処理する必要があります。電子メールに= A3500とエンコードされた記号

ここで何が起こっているのか、それについてどうすればよいですか? thnderbirdがそれをやっているので、意図したとおりに電子メールを解析することが可能でなければなりません。

+1

これはあなたのためのものです。私たちの通貨は数字と文字のリストに評価されています –

答えて

0

ここでの例に基づいてコードを作成しました。 https://docs.python.org/2/library/email-examples.html マルチパートメッセージをデコードしています。 body = part.get_payload(decode = True)の文字列を取得した後、 "deocode"はコンテンツ転送のエンコーディングを削除するだけです。文字セットの2番目のデコードを追加する必要がありました。 charset = part.get_content_charset

   body = body.decode(charset) 
関連する問題