My company provided a deal with Microsoft that allowed me to purchase Office 2010 Professional for less the 10 pounds. Hard to ignore. This version of Office includes Outlook, so I was able to use it as my email client that then Thunderbird.
The only problem was, how to migrate my old email messages from Thunderbird to Outlook? There's plenty of help to go in the other direction, but not so much for what I wanted to do.
However, it wasn't that difficult. I found a VB program, written by
Ricardo Drizin,
available here,
that would import sets of .eml
files into Outlook, so all I
needed to do was write something to convert
Thunderbird mbox
files to a set of .eml
files,
suitable for Ricardo's program.
Here's the python program:
#!/usr/local/bin/python """ NAME split.py SYNOPSIS python split.py [-r root_dir] [-s regex] file [file] ... DESCRIPTION split.py converts a Thunderbird mbox file into a set of .eml files. Multiple mbox files may be specified on the command line. The resulting eml files are written to a directory with the same name as the mbox file. Each eml directory is created in the directory named by the -r argument, or /tmp, if not specified. split.py supports the following command arguments: -f suffix sets suffix of output file. Default is .eml. A value of .eml causse split.py to strip white space from the regex string (or Outlook isn't happy) -r root_dir sets root directory for the output .eml directories and files -s regex defines regular expression at which to split the input files. Default (r'\n\nFrom -') works for Thunderbird mbox format. MODIFICATION HISTORY Mnemonic Rel Date Who split.py 1.0 20120617 mpw Created """ import os import re import sys import getopt #+++++++++++++++++++++++++++++++++++++++++++++++++ # start of program #+++++++++++++++++++++++++++++++++++++++++++++++++ # defaults root_dir ="/tmp" split_regex = r'\n\nFrom -' suffix = ".eml" # read command line arguments, if any try: opts,args = getopt.getopt(sys.argv[1:],'f:r:s:') for o,v in opts: if o == '-r': root_dir = v elif o == '-f': suffix = v elif o == '-s': split_regex = v except getopt.GetoptError: print("%s: illegal argument: %s"% (sys.argv[0],o)) sys.exit(0) sr = re.compile(split_regex) for file in args: with open(file) as fp: content = fp.read() content = open(file).read() chunks = sr.split(content) headers = sr.findall(content) target_dir = root_dir+"/"+file if not os.path.exists(target_dir): os.makedirs(target_dir,mode=0777) fno = 0 for chunk,header in zip(chunks,headers): if len(chunk.strip()) == 0: continue fn = "%s/%04d%s"%(target_dir,fno,suffix) h = open(fn,mode="w") if suffix == ".eml": h.write(header.strip()) else: h.write(header) h.write(chunk) h.close() fno = fno+1 print "Wrote %5d eml files to %s"%(fno,target_dir)