1

私はPythonでメールボックスファイルを解析していて、すべての「To:」ヘッダーを:で取得しようとしたときに奇妙な動作に遭遇しましたget_all()

tos = message.get_all('to', [])
if tos:
    tos = getaddresses(tos)
    for to in tos:
        receiver = EmailInformant()
        receiver_email = to[1]

get_all()カンマで区切られたすべての「to:」値を取得します、afaik。getaddresses次に、単一の受信者を名前と電子メール値に分割します。次の「To:」ヘッダーの場合、期待どおりに機能しません。

To: example@test.de <example@test.de>

ここでは、電子メールアドレスが名前と電子メール値として提供されていますが、パーサーはこれを2つの別個の「To:」エントリとして扱い、forループを2回実行します。これはバグですか?

4

1 に答える 1

0

電子メールの解析は非常に困難です。いくつかの異なる仕様があり、多くの動作が定義されていないか定義が不十分であり、実装が仕様に従っていないからです。それらの多くは、いくつかの点で競合しています。

標準ライブラリの電子メール モジュールが現在 Python 3.3 用に書き直されていることは知っています。 http://www.bitdance.com/blog/を参照してください。書き換えにより、このような問題が解決されるはずです。そのオプションがある場合、Python 3.2 の pypi で現在利用できます: http://pypi.python.org/pypi/email

その間、tos = set(getaddresses(tos))重複を排除してみてください。

于 2011-07-26T13:29:54.990 に答える