詳解python實現(xiàn)郵件解析的方法
前言
如何通過python實現(xiàn)郵件解析?郵件的格式十分復(fù)雜,主要是mime協(xié)議,本文主要是從實現(xiàn)出發(fā),具體原理可以自行研究。
一、安裝
通過mailgun開源的Flanker庫實現(xiàn)郵件解析。該庫包含了郵件地址解析和郵件mime格式解析。
輸入以下命令:
pip install flanker
二、代碼實現(xiàn)
1.郵件頭
def emlAnayalyse(path): with open(path, 'rb') as fhdl: raw_email = fhdl.read() eml = mime.from_string(raw_email) subject = eml.subject eml_header_from = eml.headers.get('From') eml_header_to = eml.headers.get('To') eml_header_cc=eml.headers.get('Cc') eml_time = eml.headers.get('Date') # get_annex(eml, '1') eml_attachs=attachEml1(eml) eml_body = contentEml(eml) f = HTMLFilter() f.feed(eml_body) print(f.text) def main(): path='郵件名.eml' emlAnayalyse(path) if __name__ == "__main__": main()
其中eml.header包含發(fā)送人,收件人,抄送人,時間等頭信息。
2.郵件正文
# 郵件正文 def contentEml(eml): # 判斷是否為單部分 if eml.content_type.is_singlepart(): eml_body = eml.body else: eml_body = '' for part in eml.parts: # 判斷是否是多部分 if part.content_type.is_multipart(): eml_body = contentEml(part) else: if part.content_type.main == 'text': eml_body = part.body return eml_body
通過回調(diào)函數(shù),取出郵件正文部分
3.郵件附件
def attachEml1(eml): for part in eml.parts: if not part.content_type.is_multipart(): name = part.detected_file_name with open(name, 'wb') as annex: annex.write(part.body)
通過content_type.is_multipart()
判斷是否為附件,將其保存下來。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python打包后的exe還原成.py的實現(xiàn)步驟
本文主要介紹了Python打包后的exe還原成.py的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python實現(xiàn)將文本轉(zhuǎn)換成語音的方法
這篇文章主要介紹了python實現(xiàn)將文本轉(zhuǎn)換成語音的方法,涉及Python中pyTTS模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05