python 解析 eml檔案
阿新 • • 發佈:2019-01-30
#-*- encoding: gb2312 -*-
import email
fp = open('xxxx.eml', "r")
msg = email.message_from_file(fp)
# 迴圈信件中的每一個mime的資料塊
for par in msg.walk():
if not par.is_multipart(): # 這裡要判斷是否是multipart,是的話,裡面的資料是無用的,至於為什麼可以瞭解mime相關知識。
name = par.get_param("name") #如果是附件,這裡就會取出附件的檔名
if name:
#有附件
# 下面的三行程式碼只是為了解碼象=?gbk?Q?=CF=E0=C6=AC.rar?=這樣的檔名
h = email.Header.Header(name)
dh = email.Header.decode_header(h)
fname = dh[0][0]
print '附件名:', fname
data = par.get_payload(decode=True) # 解碼出附件資料,然後儲存到檔案中
try:
f = open(fname, 'wb') #注意一定要用wb來開啟檔案,因為附件一般都是二進位制檔案
except:
print '附件名有非法字元,自動換一個'
f = open('aaaa', 'wb')
f.write(data)
f.close()
else:
#不是附件,是文字內容
print par.get_payload(decode=True) # 解碼出文本內容,直接輸出來就可以了。
print '+'*60 # 用來區別各個部分的輸出
import email
fp = open('xxxx.eml', "r")
msg = email.message_from_file(fp)
# 迴圈信件中的每一個mime的資料塊
for par in msg.walk():
if not par.is_multipart(): # 這裡要判斷是否是multipart,是的話,裡面的資料是無用的,至於為什麼可以瞭解mime相關知識。
name = par.get_param("name") #如果是附件,這裡就會取出附件的檔名
if name:
#有附件
# 下面的三行程式碼只是為了解碼象=?gbk?Q?=CF=E0=C6=AC.rar?=這樣的檔名
h = email.Header.Header(name)
dh = email.Header.decode_header(h)
fname = dh[0][0]
print '附件名:', fname
data = par.get_payload(decode=True) # 解碼出附件資料,然後儲存到檔案中
try:
f = open(fname, 'wb') #注意一定要用wb來開啟檔案,因為附件一般都是二進位制檔案
except:
print '附件名有非法字元,自動換一個'
f = open('aaaa', 'wb')
f.write(data)
f.close()
else:
#不是附件,是文字內容
print par.get_payload(decode=True) # 解碼出文本內容,直接輸出來就可以了。
print '+'*60 # 用來區別各個部分的輸出