Python 3を使用して、私はmbox
ファイルから電子メールを解析しようとしています。Python decode_headerは元の文字列を分割します
for message in mailbox.mbox('file'):
sender = message['From']
c = decode_header(sender)
生の電子メールがc
この場合
[(b'"', None), (b'Mark from Site', 'utf-8'), (b'" <[email protected]>', None)]
ある、
From: "=?UTF-8?Q?Mark_from_Site?=" <[email protected]>
とにかくこのユニークFrom:
ヘッダを有し、行が予期せずに"
引用符を次の分割され複数の要素。
"
の数に応じて、リストに定義されていない数(上記のように必ずしも3つではない)が存在する可能性があり、分割の原因が他にもある可能性があるため、扱いが煩雑な場合があります。
文字列エンコーディングがない場合(ヘッダーが純粋な場合はascii
)、分割されず、c
は"Mark from Site" <[email protected]>
です。
ascii
エンコーディングでもこの分割を避ける方法はありますか?
そうでなければ、この種のヘッダーを正しく解析する方法はありますか?
これは実際には文字列を分割しません。しかし今、ヘッダーのエンコーディングは、すべてが「utf-8」であるかのようにみなされます。代わりに 'Header(message ['From'])'を使うと、すべてのメッセージは 'us-ascii'とみなされます。 'Header'が正しいエンコーディングをそれ自身で認識させる方法はありますか? – BowPark