matijs.net — Software
MSGConvert: A .MSG to mbox convertor
Introduction
I wrote this to be able to convert some .MSG files I had lying around. These files are produced by some of Microsoft's e-mail programs, and I couldn't read them on my home machines, which run Linux.
Originally, I had only six of these files to base my program on. However, several people sent me .MSG files that my program failed to convert (Thanks!), or other feedback, so I've been able to make some improvents. If you have a file that my latest version fails to handle properly, feel free to drop me a line, preferably including the offending .MSG file. You can also file a bug in the CPAN bug tracker or the GitHub bug tracker.
If you have any questions, first take a look at the FAQ.
Usage
To use it, run:
perl -w msgconvert.pl YourMessage.msg
This will produce a file YourMessage.mime containing the message in RFC822 format. The program will complain about unrecognized OLE parts and other problems on stderr. If you supply the option --verbose, it will also tell you what OLE parts it knows about but doesn't use, and what I think they are. The option --help will make it print some usage information.
You can also let MSGConvert deliver all .MSG files in one mbox file usign --mbox, like so (assuming you made msgconvert.pl executable):
msgconvert.pl --mbox some-mbox-file *.msg
Latest News
October 26, 2009 Exactly two years after the previous version, version 0.903 of msgconvert.pl is released. It's a small change: See the change log.
October 23, 2009 Since version 0.909, Email::Outlook::Message finally supports conversion of compressed and uncompressed RTF message bodies.
February 3, 2009 You can now follow Email::Outlook::Message development on github.
October 14, 2007 The heart of MSGConvert is now available as a Perl module on CPAN, so you can now incorporate it in your own programs.
Download
You will need to get a version of Perl and download the modules Email::Outlook::Message, Email::LocalDelivery, Getopt::Long, Pod::Usage, File::Basename and their dependencies from CPAN.
You can search for the dependencies at CPAN, or use Perl's CPAN module, or they may be packaged for your particular distribution.
Finally, download the script itself.
To examine the OLE structure of the .MSG files I used a modified version of one of the examples that come with OLE::Storage_Lite.
Known Bugs/Issues
Not all data that's in the .MSG file is converted. There simply are some parts whose meaning escapes me. However, most things are converted correctly by now, including plain text, HTML and RTF-formatted message bodies.
Attachments with Apple-style resource forks, as well as PGP-signed email is known to to be converted properly.