python 獲取E mail中的資訊

2021-05-05 06:14:53 字數 1306 閱讀 7236

e-mail主要由郵件頭和郵件體兩部分組成。

郵件頭中的內容和我們寄信時寫在信封上的內容大同小意,當然這裡也包含了很多路過的「郵局」的資訊了。

郵件體中的內容就是我們寫的信或者包裹。

python自身包含了email模組處理可以快速的處理e-mail中的資訊

import email

#開啟乙個檔案

fp = open('email.eml', 'r')

#建立email例項

msg = email.message_from_file(fp)

#現在我們就可以很簡單的取出我們想要的郵件頭資訊

subject = msg.get('subject')

from = msg.get('from')

to = msg.get('to')

現在我們已經得到了郵件的主題,發件人和郵件人的資訊

可是我們怎麼取得郵件中正文資訊和附件資訊呢?

這些資訊我們就需要遍歷郵件內容來獲取了。

現在我們已經把郵件中的主要資訊取出來了。

但是為什麼取出來的資訊都看不明白呢?

例如to: "=?gb2312?b?uu/x0w==?="

這是因為郵件在傳送過程中使用base64進行了編碼操作

「=?gb2312?b?uu/x0w==?=」這段字串是使用bae64進行編碼後的gb2312字符集的字串

現在我們看看怎麼解析這些資料

str = '=?gb2312?b?uu/x0w==?='

list = email.header.decode_header(str)

#這時list內容為[[('/xba/xef/xd7/xd3', 'gb2312')]]

to = list[0][0].decode(list[0][1])

#這時to裡的內容為u'/u7334/u5b50'即utf-8字符集中的』猴子』兩字

有時解碼時會遇到不能解析的字元,這時就要給decode函式增加乙個引數了

to = list[0][0].decode(list[0][1], 'ignore')

這時無法解析的字元將被忽略

現在我們已經可以得到資訊中的中文資訊。

但是有些信件不儲存字符集怎麼辦呢?

現在我們用http://chardet.feedparser.org/裡面的chardet庫提供的功能對編碼進行探測

import chardet

str = '/xba/xef/xd7/xd3'

chardet.detect(str)

#返回的結果

經過以上的步驟我們就可以比較正確的獲取一封信件的內容了。

python對email中的混淆加密進行解密

email protected 裡面有用的資訊就是這一串字元 5c36283036382b1c6d6a6f723f3331上面這一串字元就是對email的混淆 拿到js 對其進行解密,提取有用的js 我們只需要把那一串很長的字元傳進去 就會解密出真正的email位址 import execjs de...

利用CodeIgniter中的Email類發郵件

codeigniter擁有功能強大的email類。以下為利用其傳送郵件的 關於ci的email類的詳情請參考 class welcome extends ci controller 在載入email類之後需要配置email引數。配置完成之後使用 this email initialize confi...

利用CodeIgniter中的Email類發郵件

codeigniter擁有功能強大的email類。以下為利用其傳送郵件的 關於ci的email類的詳情請參考 class welcome extends ci controller 在載入email類之後需要配置email引數。配置完成之後使用 this email initialize confi...