Generate HTML emails and mjml templates from one or more RSS feeds.

Note: This project is pre-version 1.0.0, so breaking changes may occur. Use at your own risk or lock down to a specific version using NPM.

GitHub workflow codecov npm GitHub stars License

                                _                                   _ _ 
             _ __ ___ ___      | |_ ___         ___ _ __ ___   __ _(_) |
            | '__/ __/ __|_____| __/ _ \ _____ / _ \ '_ ` _ \ / _` | | |
            | |  \__ \__ \_____| || (_) |_____|  __/ | | | | | (_| | | |
            |_|  |___/___/      \__\___/       \___|_| |_| |_|\__,_|_|_|

rss-to-email example

Table of Contents



The recommended way to use this package is as an npm package. To install and save it to your project's dependencies, run:

npm install rss-to-email --save

After installing, call the RssToEmail factory with a config object. Use the resulting rssToEmail object to get emails in mjml or html formats:

const RssToEmail = require('rss-to-email');
const config = {
  // See #Configuration section of the docs below
const rssToEmail = RssToEmail(config);

rssToEmail.getEmail('html').then((email) => {
  console.log(email); // The HTML version of your email

rssToEmail.getEmail('mjml').then((email) => {
 console.log(email); // The MJML version of your email

Command Line

You can install this package globally and run it as a command line tool as well. First install it:

npm install -g rss-to-email

Then run the tool:

rss-to-email <config-file-path> <output-folder-path>

The path should be relative to your current directory. For example, if your config file is at ./config.json and you want to output the resulting files to a directory ./output, you would run:

rss-to-email ./config.json ./output


For an example config file, see config.example.json.

  • accentColor: A hex or html-safe color code.
  • filename: The base name of the output files to generate (do not include extensions).
  • header: Configuration for the header section of the email:
    • banner: (optional) An image url for the banner at the top of the email.
    • link: A link for the header image or text.
    • title: Shown if the banner is not set or as an alt tag on the image.
  • intro: The first line of the email. Can use HTML or plain text.
  • feeds: An array of RSS feeds you'd like to include. Only url is required:
    • url: The url to the RSS feed.
    • title: (optional) A custom feed title. Will use the RSS feed's embedded one by default.
    • description: (optional) A short custom feed description. Will use the RSS feed's embedded one by default.
    • limit: (optional) Truncate items greater than a given limit.
    • publishedSince: (optional) Filter out posts published before this date.
    • parserOptions: (optional) Custom RSS parser options outlined in the Node rss-parser documentation.
  • outro: The last line of the email. Can use HTML or plain text.
  • templateUrl: (optional) A handlebars/mjml template. For more details, see Templates section.


In order to compose custom emails, you can build your own MJML templates with Handlebars. If you don't specify a template URL, the library defaults to this file.

Many of the config file's variables are exposed in the templates including:

  • header
  • intro
  • outro

The feeds variable contains an array of all of the feeds with an array of all of the items in each. For example, the following is a basic template that will loop through all the RSS feeds and items, displaying the title and content of each:

{{#each feeds}}
  <!-- Feed -->
  {{#each items}}
    <!-- Item -->
          <a href="{{}}">{{this.title}}</a>

You can also use any helper in the handlebars-helpers library:

{{#is intro "A certain intro"}}
  <p>A certain intro was used.</p>


All patches, fixes, and ideas welcome! Please read for furthers details.



Copyright 2021, Hughes Domains, LLC.

Rss To Email

Generate HTML emails from your RSS feeds.

Rss To Email Info

⭐ Stars90
🔗 Source
🕒 Last Updatea year ago
🕒 Created5 years ago
🐞 Open Issues4
➗ Star-Issue Ratio23
😎 Authorrsslove