Forward RSS feeds to your email address, community maintained

Overview
Downloads Latest Version License

Getting Started With rss2email

We highly recommend that you watch the rss2email project on GitHub so you can keep up to date with the latest version, bugfixes and features:

https://github.com/rss2email/rss2email

Installing rss2email

Packages

A quick way to get rss2email going is using pre-made packages. There are releases for Debian, Fedora, Gentoo, NetBSD, NixOS, OpenBSD, openSUSE, and Ubuntu.

Installing by hand

Requirements

Before you install rss2email, you'll need to make sure that a few things are in place.

  1. Ensure that a version of Python ≥3.6 is installed.
  2. Install the required Python packages.
  3. Figure out how you are going to send outgoing email. You have two options here: either use an SMTP server or a local sendmail program. So,
    • determine your outgoing email server's SMTP address, or
    • install sendmail (or a compatible replacement like postfix).
Download

Download the latest rss2email source and unpack it. You can choose from several equivalent formats.

  1. A .zip file (suggested for Microsoft Windows users) or .tar.gz file (suggested for everyone else):

    * Navigate to https://github.com/rss2email/rss2email/releases
    * Click either the ``zip`` or ``tar.gz`` icon for the latest release
    * Download and extract the archive
    
  1. A Git checkout (suggested for developers):

    $ git clone git://github.com/rss2email/rss2email.git
    
Install

From the unpacked directory, run:

$ python setup.py install

You can pass all the usual options to the install command, including --user. If you don't want to install rss2email, you can also run r2e directly from the source directory.

Upgrading to a new version

Just repeat the installation procedure for the new source package. If your config file and data file were in the old source directory, move them over to the new source directory. If the config and data files were in another directory (e.g. ~/.config and ~/.local/share), there is no need to move them.

Using rss2email

Create a new feed database to send updates to your email address:

$ r2e new [email protected]

This command will create a configuration file ($XDG_CONFIG_HOME/rss2email.cfg by default) and a feed database ($XDG_DATA_HOME/rss2email.json by default). If you'd rather those files were stored in other locations, use the --config and --data options. XDG_CONFIG_HOME defaults to $HOME/.config and XDG_DATA_HOME defaults to $HOME/.local/share.

You should edit the default configuration file now to adjust rss2email for your local system. Unless you've installed a local sendmail-equivalent, you'll need to edit the SMTP options.

Subscribe to some feeds:

$ r2e add eff https://www.eff.org/rss/updates.xml

That will cause rss2email to notify you when there is a new announcement from the Electronic Frontier Foundation. Repeat this for each feed you want to subscribe to.

When you run rss2email, it emails you about every story it hasn't seen before. But the first time you run it, that will be every story. To avoid this, you can ask rss2email not to send you any stories the first time you run it:

r2e run --no-send

Then later, you can ask it to email you new stories:

r2e run

When a run is made, rss2email stores the list of already seen items for each feed in $HOME/.local/share/rss2email.json.

Customizing rss2email

There are a number of options, described in full in rss2email/config.py, to customize the way rss2email behaves. If you want to change something, edit the configuration file that was created by r2e new.

For example, if you want to receive HTML mail, instead of having entries converted to plain text:

html-mail = True

To be notified every time a post changes, instead of just when it's first posted (see also trust-link and reply-changes, described in rss2email/config.py):

trust-guid = True

And to make the emails look as if they were sent when the item was posted:

date-header = True

If you get an error message Sender domain must exist, add the following to your configuration file:

from = [email protected]
force-from = True

You can make the email address whatever you want, but your mail server requires that the yoursite.com part actually exists.

SMTP

By default, rss2email uses sendmail (or an equivalent) to send outgoing email. If you don't have such a program installed, or simply prefer to use SMTP directly, edit the configuration file and fill in your outgoing email server's details:

[DEFAULT]
...
email-protocol = smtp
smtp-server = smtp.example.net:587
smtp-auth = False
...

If your server requires you to login, change smtp-auth = False to smtp-auth = True and enter your email username and password:

smtp-auth = True
smtp-username = username
smtp-password = password

If your server requires an TLS/SSL connection (SMTPS), change smtp-ssl = False to smtp-ssl = True. If your server does not require a SMTPS connection but you request authentication, rss2email will use STARTTLS to encrypt the connection before sending your login credentials to the server.

Post-processing

rss2email has a mechanism to post-process entries. A post-processor can be used to change the content of each entry before rss2email sends the email out. A hook is added by defining the variable post-process in the config file. It takes two arguments, the module and the function to call. For example:

post-process = rss2email.post_process.prettify process

Examples of built-in post-processors:

  • prettify.py prettifies the HTML content with BeautifulSoup.
  • redirect.py remove redirects on the post URL for privacy or durability.

Automating rss2email

More than likely you will want rss2email to run automatically at a regular interval. Under Windows this is can be easily accomplished using the Windows Task Scheduler. This site has a nice tutorial on it. Just select r2e.bat as the program to run. Once you've created the task, double click on it in the task list and change the Run entry so that run comes after r2e.bat. For example, if you installed rss2email in the C:\rss2email directory, then you would change the Run entry from C:\rss2email\r2e.bat to C:\rss2email\r2e.bat run.

On Unix/Linux systems, you should add a cron job that runs r2e. For example, run r2e every night (at 1:23 am) with:

23 1 * * * r2e run

Development

Community

User discussion and development take place on GitHub. Please feel free to post bug reports, feature requests, comments, and patches. If you do not have a GitHub account and do not wish to acquire one, please come chat in the IRC channel.

There is a developer chat on the Libera IRC server, in the rss2email channel. Feel free to idle.

Tips and tricks

When adding a new test case, it is possible to just add the new input files, and then run the test suite with FORCE_TESTDATA_CREATION=1, and the test suite will automatically generate the output file. Just make sure to check that the output file does match what is wanted before checking it in.

A webapp for taking fast notes, designed for business, school, and collaboration with groups.

JOTS Journal of the Session A webapp for taking fast notes, designed for business, school, and collaboration with groups.

Zebadiah S. Taylor 2 Jun 10, 2022
A fluid medium for storing, relating, and surfacing thoughts.

Conceptarium A fluid medium for storing, relating, and surfacing thoughts. Read more... Instructions The conceptarium takes up about 1GB RAM when runn

115 Dec 19, 2022
Ergonomic option parser on top of dataclasses, inspired by structopt.

oppapī Ergonomic option parser on top of dataclasses, inspired by structopt. Usage from typing import Optional from oppapi import from_args, oppapi @

yukinarit 4 Jul 19, 2022
Control your gtps with gtps-tools!

Note Please give credit to me! Do not try to sell this app, because this app is 100% open source! Do not try to reupload and rename the creator app! S

Jesen N 6 Feb 16, 2022
Start and stop your NiceHash miners using this script.

NiceHash Mining Scheduler Use this script to schedule your NiceHash Miner(s). Electricity costs between 4-9pm are high in my area and I want NiceHash

SeaRoth 2 Sep 30, 2022
Would upload anything I do with/related to brainfuck

My Brainfu*k Repo Basically wanted to create something with Brainfu*k but realized that with the smol brain I have, I need to see the cell values real

Rafeed 1 Mar 22, 2022
Graphsignal Logger

Graphsignal Logger Overview Graphsignal is an observability platform for monitoring and troubleshooting production machine learning applications. It h

Graphsignal 143 Dec 05, 2022
Alfred 4 Workflow to search through your maintained/watched/starred GitHub repositories.

Alfred 4 Workflow to search through your maintained/watched/starred GitHub repositories. Setup This workflow requires a number of Python modules. Thes

Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs 1 Oct 14, 2022
本仓库整理了腾讯视频、爱奇艺、优酷、哔哩哔哩等视频网站中,能够观看的「豆瓣电影 Top250 榜单」影片。

Where is top 250 movie ? 本仓库整理了腾讯视频、爱奇艺、优酷、哔哩哔哩等视频网站中,能够观看的「豆瓣电影 Top250 榜单」影片,点击 Badge 可跳转至相应的电影首页。

MayanDev 123 Dec 22, 2022
An open source server for Super Mario Bros. 35

SMB35 A custom server for Super Mario Bros. 35 This server is highly experimental. Do not expect it to work without flaws.

Yannik Marchand 162 Dec 07, 2022
Sacred is a tool to help you configure, organize, log and reproduce experiments developed at IDSIA.

Sacred Every experiment is sacred Every experiment is great If an experiment is wasted God gets quite irate Sacred is a tool to help you configure, or

IDSIA 4k Jan 02, 2023
Install JetBrains Toolbox

ansible-role-jetbrains-toolbox Install JetBrains Toolbox Example Playbook This example is taken from molecule/default/converge.yml and is tested on ea

Antoine Mace 2 Feb 04, 2022
Gives criticality score for an open source project

Open Source Project Criticality Score (Beta) This project is maintained by members of the Securing Critical Projects WG. Goals Generate a criticality

Open Source Security Foundation (OpenSSF) 1.1k Dec 23, 2022
General tricks that may help you find bad, or noisy, labels in your dataset

doubtlab A lab for bad labels. Warning still in progress. This repository contains general tricks that may help you find bad, or noisy, labels in your

vincent d warmerdam 449 Dec 26, 2022
Backend Interview Challenge

Inspect HOA backend challenge This is a simple flask repository with some endpoints and requires a few more endpoints. It follows a simple MVP (model-

1 Jan 20, 2022
A Klipper plugin for accurate Z homing

Stable Z Homing for Klipper A Klipper plugin for accurate Z homing This plugin provides a new G-code command, STABLE_Z_HOME, which homes Z repeatedly

Matthew Lloyd 24 Dec 28, 2022
DC619/DC858 Mainframe Environment/Lab

DC619 Training LPAR The file DC619 - Mainframe Overflows Hands On.pdf contains the labs and walks through how to perform them. Use docker You can use

Soldier of FORTRAN 9 Jun 27, 2022
An application for automation of the mining function in the game Alienworlds.IO

alienautomation A Python script made to automate the tidious job of mining on AlienWorlds This script: Automatically opens the browser Automatically l

anonieXdev 42 Dec 03, 2022
These are the scripts used for the project of ‘Assembly of a pan-genome for global cattle reveals missing sequence and novel structural variation, providing new insights into their diversity and evolution history’

script-SV-genotyping These are the scripts used for the project of ‘Assembly of a pan-genome for global cattle reveals missing sequence and novel stru

2 Aug 26, 2022
Shell scripts made simple 🐚

zxpy Shell scripts made simple 🐚 Inspired by Google's zx, but made much simpler and more accessible using Python. Rationale Bash is cool, and it's ex

Tushar Sadhwani 492 Dec 27, 2022