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 <bob@example.com>
"Wed, 16 May 2018 20:07:52 +0000",Also an email,Alice <alice@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
<89125@example.com>,"Wed, 16 May 2018 20:05:16 +0000",An email
<180c6@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.