You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
924 B
Python

#!/usr/bin/python
import os, argparse, email, mailbox
parser = argparse.ArgumentParser(description='Splits an mbox file into eml files.')
parser.add_argument('mbox_files', metavar='file', type=str, nargs='+',
help='the mbox files to parse')
args = parser.parse_args()
options = vars(args)
for mbox in options['mbox_files']:
file_number = 1
try:
os.makedirs("%s/extracted/%s" % (os.path.dirname(mbox), os.path.basename(mbox)))
except OSError:
pass
try:
box = mailbox.UnixMailbox(open(mbox, "rb"), email.message_from_file)
except Exception, e:
print e
print "Error encountered while processing %s" % mbox
else:
for message in box:
filename = "%s/extracted/%s/%d.eml" % (os.path.dirname(mbox), os.path.basename(mbox), file_number)
fl = open(filename, "w")
fl.write(message.as_string())
fl.close()
print "%s - %s" % (filename, message["Subject"])
file_number += 1