2016-05-25 10 views
0

Python 3以降ではhas_keys()関数が削除されているため、電子メールファイルに "From:"ヘッダーが存在するかどうかを確認するコードはわかりません。ここでPython 3.x - "From:"ヘッダーが電子メールファイルに存在するかどうかを確認する方法?

は私の現在の抜粋です。

with open(emlFile, 'rb') as fp: 
     headers = BytesParser(policy=policy.default).parse(fp) 
     if 'From:' in headers: 
      str = headers['from'] 

それは私が公式のPythonドキュメント(強調鉱山を)引用StackOverflowの

答えて

1

内の他のスレッドから見たものであるので、私はin代わりのhas_keys('from')を使用しました:

BytesParser.parse

バイナリファイルのようなオブジェクトfpからすべてのデータを読み込み、結果のバイト数が であり、がメッセージオブジェクトを返します。 fpはファイルのようなオブジェクトのreadline()メソッドとread()メソッドの両方をサポートしなければなりません( )。

解析の結果はMessageインスタンスであるので、のはthat class docsをチェックしてみましょう:

__contains__(name)

戻り、真のメッセージオブジェクトがフィールド という名前の名前を持っている場合。一致は大文字と小文字を区別せずに行われ、の名前には にはコロンの末尾にが含まれてはいけません。オペレータで、例えばのために使用:

if 'message-id' in myMessage: 
    print('Message-ID:', myMessage['message-id']) 

あなたのチェックがコロンを末尾に含まれており、ドキュメントによると、無効です。有効なチェックは:

関連する問題