2011-12-07 13 views
8

pythonですべての電子メールヘッダを抽出しようとするときに問題があります。私は私が探しているものを得る方法を知っていますが、私はすべてのヘッダーを保存したいと私はそれを行う方法がわかりません。ここでpythonで電子メールヘッダだけを抽出する

ソリューション私はそれがだから私は

msg['To'] 
msg['From'] 

を得ることができ、電子メールオブジェクト

import email 
f = open(kwargs['opt_emailfile']) 
msg = email.message_from_file(f) 
f.close() 

にロードされている。しかし、私はすべてのヘッダー

たい

は何ですか私は答えのおかげで

おそらくHeaderParserを使用して
 f = open(kwargs['opt_emailfile']) 
     msg = email.message_from_file(f) 
     f.close() 

     parser = email.parser.HeaderParser() 
     headers = parser.parsestr(msg.as_string()) 

     for h in headers.items(): 
      print h 
+0

これまでに何を試しましたか?部分的に動作しているか、動作していないコードがありますか? – srgerg

+0

ok私が今まで持っているものに投稿を編集しました – Mike

答えて

13

from email.parser import HeaderParser 
parser = HeaderParser() 
h = parser.parsestr(email) 

print h.keys() 

を私はちょうどあなたがあなたの質問を編集した気づきました。実際には、HeaderParserを使わずに持っていたものと同じ情報を得ることができます。例えばheaders.items()will returnヘッダーと対応する値を持つ2タプルのリスト。

+0

'email'を直接インポートしていなくても、モジュールの名前から' email'という名前の変数を持つのは良い考えではありません。 – ccpizza

+1

'keys()'のソートは辞書的な振る舞いを意味していますが、これは実際にはすべてのヘッダを順番に返します。 – tripleee

+0

これを私自身の関連する質問に適合させました:http://stackoverflow.com/a/42090598/874188 – tripleee

関連する問題