2011-12-07 57 views
8

我在嘗試提取python中的所有電子郵件標題時遇到了一些問題。我知道如何獲得我正在尋找的,但我想保存所有的標題,我不知道如何做到這一點。在python中提取電子郵件標題

我把它加載到電子郵件對象

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

這樣我就可以得到

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

但我想所有的頭

解決方案

這裏是什麼我的答案是

 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

使用HeaderParser也許是:

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

這個(以及OP在問題本身中的「解決方案」)實際上依次返回所有的頭文件,即使'keys()'類似於類似字典的行爲。 – tripleee

+0

適應此問題到我自己的一個相關問題的答案:http://stackoverflow.com/a/42090598/874188 – tripleee