I’ve often thought it would be useful to have an “Export as CSV” button on my inbox, and recently had an excuse to implement one.
I needed to parse the
Subject of each email coming from an automated process, but the inbox was in the
Maildir format, and I needed something more useful for data interchange.
So I wrote a utility,
mail2csv, to export the
Maildir as CSV file, which many existing tools can work with. It produces one row per email, and one column per email header:
The basic usage is:
$ mail2csv example/ Date,Subject,From "Wed, 16 May 2018 20:05:16 +0000",An email,Bob <firstname.lastname@example.org> "Wed, 16 May 2018 20:07:52 +0000",Also an email,Alice <email@example.com>
You can select any header with the
--headers field, which accepts globs:
$ mail2csv example/ --headers Message-ID Date Subject Message-ID,Date,Subject <firstname.lastname@example.org>,"Wed, 16 May 2018 20:05:16 +0000",An email <email@example.com>,"Wed, 16 May 2018 20:07:52 +0000",Also an email
If you’re not sure which headers your emails have, then you can make a CSV with all the headers, and just read the first line:
$ mail2csv example/ --headers '*' | head -n1
You can find the Python code for this tool on GitHub here.