有时你的电脑上恰好没有 邮件阅读器,或者是附件被OE禁止访问了,郁闷啊,附件里边可能是很重要的文件,没法打开。如果你的电脑上装了python 的话,用下边一段代码就可以很快地把你的邮件中的附件完完整整的解析出来,并保存在你的电脑上。
首先在你的电脑上e盘里建个mail 文件夹,里边再建个attach文件夹,把你的邮件(.eml)拷到mail 文件夹里,运行下边的代码就可以了。你的附件就保存在attach 文件夹里了,呵呵。
import
string,time,os
import email
from email.Header import Header
from email.Header import decode_header
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email import Encoders
import base64
def showMessage(mail):
if mail.is_multipart():
for part in mail.get_payload():
showMessage(part)
else :
types = mail.get_content_type()
if types == ' text/plain ' :
try :
stmp = mail.get_payload(decode = True)
print stmp
except :
print ' [*001*]BLANK '
elif types == ' text/base64 ' :
try :
stmp = base64.decodestring(mail.get_payload())
print stmp
except :
print ' [*001*]BLANK '
def showMessage4(mail):
for part in mail.walk():
contenttype = part.get_content_type()
if contenttype == ' text/plain ' :
try :
print part.get_payload(decode = True)
except :
print ''
elif contenttype == ' text/base64 ' :
try :
print base64.decodestring(part.get_payload())
except :
print ''
def PareMessageAttachMent(mail):
global PATH
count = 0
ErrorList = []
for part in mail.walk():
contenttype = part.get_content_type()
filename = part.get_filename()
if filename == None:
continue
filename = email.Header.decode_header(filename)[0][0]
filename = os.path.split(filename)[ 1 ] # 防止文件名出现全路径错误
if filename: # ##解析邮件的附件内容
fn = PATH + filename
if os.path.exists(fn) == False:
f = open(fn, ' wb ' )
try :
f.write(base64.decodestring(part.get_payload()))
except :
pass
f.close()
else :
continue
PATH = ' e:/mail/Attach/ '
files = os.listdir( ' e:/mail ' )
id = 0
for eachfile in files:
if os.path.splitext(eachfile)[ 1 ].lower() == ' .eml ' :
mail = email.message_from_file(open( ' e:/mail/ ' + eachfile))
mail[ ' subject ' ],mail.get( ' subject ' )
mail[ ' From ' ],mail.get( ' From ' )
mail[ ' To ' ],mail.get( ' To ' )
mail[ ' date ' ],mail.get( ' date ' )
subject = email.Header.decode_header(mail[ ' subject ' ])[0][0]
subcode = email.Header.decode_header(mail[ ' subject ' ])[0][ 1 ]
FromAddr = email.Header.decode_header(mail[ ' From ' ])[0][0]
ToAddr = email.Header.decode_header(mail[ ' To ' ])[0][0]
date = email.Header.decode_header(mail[ ' date ' ])[0][0]
print ' ********* mail ' ,id + 1 , ' ********* '
id = id + 1
print eachfile
showMessage(mail)
PareMessageAttachMent(mail)
print ' '
import email
from email.Header import Header
from email.Header import decode_header
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email import Encoders
import base64
def showMessage(mail):
if mail.is_multipart():
for part in mail.get_payload():
showMessage(part)
else :
types = mail.get_content_type()
if types == ' text/plain ' :
try :
stmp = mail.get_payload(decode = True)
print stmp
except :
print ' [*001*]BLANK '
elif types == ' text/base64 ' :
try :
stmp = base64.decodestring(mail.get_payload())
print stmp
except :
print ' [*001*]BLANK '
def showMessage4(mail):
for part in mail.walk():
contenttype = part.get_content_type()
if contenttype == ' text/plain ' :
try :
print part.get_payload(decode = True)
except :
print ''
elif contenttype == ' text/base64 ' :
try :
print base64.decodestring(part.get_payload())
except :
print ''
def PareMessageAttachMent(mail):
global PATH
count = 0
ErrorList = []
for part in mail.walk():
contenttype = part.get_content_type()
filename = part.get_filename()
if filename == None:
continue
filename = email.Header.decode_header(filename)[0][0]
filename = os.path.split(filename)[ 1 ] # 防止文件名出现全路径错误
if filename: # ##解析邮件的附件内容
fn = PATH + filename
if os.path.exists(fn) == False:
f = open(fn, ' wb ' )
try :
f.write(base64.decodestring(part.get_payload()))
except :
pass
f.close()
else :
continue
PATH = ' e:/mail/Attach/ '
files = os.listdir( ' e:/mail ' )
id = 0
for eachfile in files:
if os.path.splitext(eachfile)[ 1 ].lower() == ' .eml ' :
mail = email.message_from_file(open( ' e:/mail/ ' + eachfile))
mail[ ' subject ' ],mail.get( ' subject ' )
mail[ ' From ' ],mail.get( ' From ' )
mail[ ' To ' ],mail.get( ' To ' )
mail[ ' date ' ],mail.get( ' date ' )
subject = email.Header.decode_header(mail[ ' subject ' ])[0][0]
subcode = email.Header.decode_header(mail[ ' subject ' ])[0][ 1 ]
FromAddr = email.Header.decode_header(mail[ ' From ' ])[0][0]
ToAddr = email.Header.decode_header(mail[ ' To ' ])[0][0]
date = email.Header.decode_header(mail[ ' date ' ])[0][0]
print ' ********* mail ' ,id + 1 , ' ********* '
id = id + 1
print eachfile
showMessage(mail)
PareMessageAttachMent(mail)
print ' '