2017-08-14 67 views
0

我使用的是python 3.6.1,我想讀取電子郵件文件(.eml)進行處理。我現在用的是emaildata 0.3.4包,但每當我試圖導入文本類的文檔中,我得到的模塊錯誤:使用emaildata閱讀使用Python 3.6的.eml文件0.3.4

import email 
from email.text import Text 
>>> ModuleNotFoundError: No module named 'cStringIO' 

當我試圖正確使用this update,我得到了一個錯誤有關mimetools

>>> ModuleNotFoundError: No module named 'mimetools' 

是否有可能使用emaildata 0.3.4與python 3.6解析.eml文件?或者有沒有其他的軟件包可以用來解析.eml文件?謝謝

+1

emaildata模塊已超過2年未更新。它與Python 3不兼容。請考慮使用標準庫中的[email](https://docs.python.org/3/library/email.html#module-email)軟件包。 –

+0

感謝@Dmitri,爲了完整性,我會在這裏使用電子郵件包提供答案。 – killerT2333

回答

1

使用電子郵件包,我們可以讀取.eml文件。然後,使用BytesParser庫來解析文件。最後,使用plain首選項(純文本),get_body()方法和get_content()方法獲取電子郵件的原始文本。

import email 
from email import policy 
from email.parser import BytesParser 
files = glob.glob('*.eml') # returns list of files 
with open(files[2], 'rb') as fp: 
    msg = BytesParser(policy=policy.default).parse(fp) 

text = msg.get_body(preferencelist=('plain')).get_content() 
print(text) 
>>> "Hi, 
>>> This is an email 
>>> Regards, 
>>> Mister. E" 

當然,這是一個簡化的例子 - 沒有提到HTML或附件。但基本上完成了問題所要求的和我想要做的事情。