andrewferrier / email2pdf

Script to convert emails to PDF from the command-line, as well as detach recognized attachments. Helps to process incoming emails and assist automatically with a non-paper paperwork workflow. Designed to work in tandem with getmail to convert forwarded emails to PDF automatically.
MIT License
67 stars 36 forks source link

email2pdf

⚠️ DEPRECATED: This repository is deprecated, as I don't use email2pdf any more or have the time to maintain it. For now, it will remain here in case anyone wishes to fork and maintain it.

email2pdf is a Python script to convert emails to PDF from the command-line. It is not interactive (it doesn't run from a browser or have a GUI), but is intended to be run as a mail delivery agent - it won't retrieve emails for you, but it will take them from standard input as an MDA will and 'deliver' them to PDF files. It is well-placed to use together with getmail, perhaps run on a schedule using cron or similar. You can also just use it as a standalone utility to convert a raw email (normally an .eml file) to a PDF. Type email2pdf --help for more information on usage and options available.

For more information on hacking/developing email2pdf, please see HACKING.md. Note that use is subject to the license conditions.

Installing Dependencies

Before you can use email2pdf, you need to install some dependencies. The instructions here are split out by platform:

Debian/Ubuntu

OS X

Configuring getmail

getmail is not strictly a dependency, but when it is combined with email2pdf, it can be used to retrieve new emails from a remote IMAP server and automatically convert them to PDFs locally. The getmailrc.sample file in the repository can be used as a starting point for your own getmailrc to do this. Note that the sample will need editing, of course - see the getmail documentation for more information on that. Also, it is configured by default to delete remote emails from the server once they are converted - be careful with that. You might want to consider setting up your crontab something like this:

  @hourly getmail --verbose | logger

This will ensure that getmail is invoked hourly to fetch email, and log its output to syslog.

If your mailserver is unreliable, you might want to consider wrapping the getmail cron job with cromer.

Configuring procmail

I don't have any direct experience using procmail with email2pdf, so don't have any specific setup steps, although I understand it can be made to work. You should be aware that currently there is an outstanding issue with I/O encodings with procmail that you may need to work around - see issue #76 for more information.

Related Projects

Harvinderpal Ghotra has refactored email2pdf into a library, which may be helpful if you need to embed email2pdf-like functionality in a Python program (although there is no specific effort to keep these two projects in sync).