Skip to content

AntoniosBarotsis/Rss2Email

Repository files navigation

Rss2Email

Build & Tests Crates.io docs.rs Minimum Supported Rust Version dependency status Docker Images Actively Maintained

A small program capable of aggregating content from multiple RSS/Atom feeds and mailing them to you in a practical summary email. Keep track of your favorite blogs that don't feature an update newsletter or similar service.

Example

Dependencies

You'll need Rust or Docker installed to compile this software.

Installation

Each release automatically publishes Docker images for x86 and arm on DockerHub. Note that these can only run on AWS Lambda. If you want to run them elsewhere through Docker, read here.

Alternatively, you can build this from source. Clone this repository and run:

cargo build --release

Check out the build from source section of the wiki for more information.

Configuration

Rss2email requires some environment variables to work. These can be provided either in your shell or as entries in a .env file.

  • EMAIL_ADDRESS: the mail address you will use to send the emails
  • RECIPIENT_ADDRESSES: comma delimited list of recipient email addresses
  • SUBJECT: the email subject (could be rss2email). Including $POST_COUNT in your subject will have it replaced with the number of posts fetched. For example SUBJECT=rss2email - $POST_COUNT new posts
  • DAYS: this value indicates up to how many days in the past we go to search for entries
  • FEEDS: a list of semicolon-separated feed URLs.
    eg: "https://blog.rust-lang.org/feed.xml;https://www.linux.org/articles/index.rss"
  • EMAIL (optional, defaults to SendGrid): Which provider to use to send the email.
    For the supported providers, you can check the docs.
  • API_KEY (optional): Your email provider's authentication key.
  • SKIP_IF_NO_NEW_POSTS (optional): Whether an email should be sent if the number of posts fetched is 0.

More details are available in the Running the code wiki section.

Usage

Running the code in debug mode won't send any emails and will instead output the generated HTML in the console.

cargo run

It is recommended to try this out first and make sure that all your feeds and config variables are correctly set up.

Running the project in release mode will send the emails

./target/release/Rss2email
# or
cargo run --release

Contributing

Thanks for considering contributing!

Read this.

Thanks to all Contributors!