Converts email newsletters to static HTML pages and an Atom feed.
Go to file
Jacob Kiers 9f815f3f9c
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
Release version 0.2.3
Signed-off-by: Jacob Kiers <>
2022-12-29 18:56:26 +01:00
.cargo Build with rust v1.66 and cross v0.2.4 2022-12-16 18:42:38 +01:00
resources Add style sheet to the feed 2022-12-27 22:59:45 +01:00
src Update dependencies with contributions 2022-12-29 18:55:19 +01:00
systemd Add systemd deployment example 2022-09-06 23:36:37 +02:00
.drone.jsonnet Add update subcommand 2022-12-29 00:08:49 +01:00
.gitignore Ignore more directories 2022-08-06 23:00:57 +02:00 Release version 0.2.3 2022-12-29 18:56:26 +01:00
Cargo.lock Release version 0.2.3 2022-12-29 18:56:26 +01:00
Cargo.toml Release version 0.2.3 2022-12-29 18:56:26 +01:00 Add link to releases page 2022-12-27 12:27:27 +01:00

Newsletter to Web

Converts a newsletter to and Atom feed and static HTML files.


Get the latest release from the releases page.

Getting help

For help, use

  • newsletter-to-web help
  • newsletter-to-web help <subcommand>.

Basic usage

First, download all messages from the IMAP mail server and store them in the data/ directory:

newsletter-to-web fetch-from-imap -s <> -u <> -p <password>

Then, convert them to an Atom feed, using as the base domain:

newsletter-to-web --include-html build-feed

This will put the output in the output/ directory. The Atom feed will be in output/feed.xml, together with a very simple index.html file pointing to the feed. It will also add an HTML file for every email with the HTML content.

The feed will already contain the full HTML, so it can easily be read from a feed reader.


Receive email

  • IMAP integration
  • Direct feeding of email message
  • Read from Maildir
  • Read from MBOX

Convert email to HTML

  • Generate static HTML files
  • Parse and add unsubscribe link
  • Where possible: remove tracking pixels / images
  • Prevent loading of scripts / images without user interaction

Create ATOM feed

  • Single feed for everything
  • One feed per newsletter
  • Index feed (containing all newsletters)?