#!/usr/bin/env python3 """source for this script https://docs.python.org/3/library/email.examples.html""" """Unpack a MIME message into a directory of files.""" import os import email import mimetypes from email.policy import default from argparse import ArgumentParser def main(): # parser = ArgumentParser(description="""\ # Unpack a MIME message into a directory of files. # """) # parser.add_argument('-d', 'directory', required=True, # help="""Unpack the MIME message into the named # directory, which will be created if it doesn't already # exist.""") # parser.add_argument('msgfile') # args = parser.parse_args() with open("mysourcedirectory/mymailfilename", 'rb') as fp: #Insert here your sourcedirectory and the file name of the file to parse msg = email.message_from_binary_file(fp, policy=default) try: os.mkdir("mybeautifulmaildirectory") #insert here name of output path except FileExistsError: pass # with open(args.msgfile, 'rb') as fp: # msg = email.message_from_binary_file(fp, policy=default) # try: # os.mkdir(args.directory) # except FileExistsError: # pass counter = 1 for part in msg.walk(): # multipart/* are just containers if part.get_content_maintype() == 'multipart': continue # Applications should really sanitize the given filename so that an # email message can't be used to overwrite important files filename = part.get_filename() if not filename: ext = mimetypes.guess_extension(part.get_content_type()) if not ext: # Use a generic bag-of-bits extension ext = '.bin' filename = 'part-%03d%s' % (counter, ext) counter += 1 with open(os.path.join("/mybeautifulcleanmaildirectory", filename), 'wb') as fp: #insert output path above fp.write(part.get_payload(decode=True)) if __name__ == '__main__': main()