python批量解析郵件並下載附件
阿新 • • 發佈:2019-01-26
python中的email模組可以方便的解析郵件,先上程式碼
#-*- encoding: gb2312 -*-
import os
import email
def mail_to_text(mailname,datapath,index):
#由於批處理的郵件包含的附件名稱相同,這裡傳入一個index作為區別符
fp=open(mailname,"r")
msg=email.message_from_file(fp)
for par in msg.walk():
if not par.is_multipart():
name=par.get_param("name" ) #獲取附件名
if name:
h=email.Header.Header(name)
dh=email.Header.decode_header(h)
fname = dh[0][0]
data=par.get_payload(decode=True)
try:
f=open(fname,'wb')
except:
data_name=str(h).replace('/' ,'_') #附件資料
f=open(datapath+'\\'+str(index)+data_name,'wb')
f.write(data)
f.close()
if __name__=='__main__':
dir="C:\\Users\\admin\\Desktop\\srcData\\" #郵件存放路徑
Dir=unicode(dir,"utf8")
datapath="C:\\Users\\admin\\Desktop\\destData" #附件存放路徑
DataPath=unicode(datapath,"utf8")
count=0
for filename in os.listdir(dir):
print filename
filename=unicode(dir+filename,"utf8") #由於郵件名出現中文,所以統一用utf8編碼,便於讀取
print filename
count+=1
mail_to_text(filename,datapath,count)
注:郵件名稱中出現中文時需特別小心