---
name: "r2e"
section: "1"
platform: "linux"
package: "rss2email"
version: "3.14-8"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/r2e"
---

# r2e(1)

receive RSS feeds by email

## NAME

r2e - receive RSS feeds by email

## SYNOPSIS

**r2e** \[*options*\] *\<command\>* \[*\<args\>*\]

## DESCRIPTION

**r2e** is a simple program which you can run in your [**crontab**(5)](/crontab/5.md). It watches RSS feeds and sends you nicely formatted email message for each new item.

For a quick start with **r2e** try these steps:

```
r2e new your@yourdomain.com
r2e add feedname http://feed.url/somewhere.rss
r2e run
```

The last command should eventually be put into your crontab if you want things be sent you automatically.

## OPTIONS

- \-h, --help

  Print the rss2email help and exit.

- \-v, --version

  Print the rss2email version and exit.

- \--full-version

  Print the versions of Python, the compiler used to compile Python, and packages used by rss2email.

- \-c, --config *\<path\>*

  The program configuration is read from $XDG\_CONFIG\_HOME/rss2mail.cfg by default (see also FILES and ENVIRONMENT VARIABLES below).  Use this option to set a different configuration file.

- \-d, --data *\<path\>*

  Dynamic program data is read from $XDG\_DATA\_HOME/rss2mail.json by default (see also FILES and ENVIRONMENT VARIABLES below).  Use this option to set a different data file.

- \-V, --verbose

  Increment the logging verbosity.

## COMMANDS

- **new \[*\<email\>*\]**

  Create a new feed database. If the *\<email\>* argument is given, it sets the default email address that mails are sent to.

- **email \[*\<email\>*\]**

  Update the default target email address to *\<email\>*.

- **add \[*--only-new*\] *\<name\>* *\<url\>* \[*\<email\>*\]**

  Subscribe to a feed. The *\<name\>* argument gives the feed a name for future manipulation. *\<url\>* is the URL of the feed.  The optional *\<email\>* argument is the email address to send new items to, overriding the default address for this particular feed.  Repeat for each feed you want to subscribe to.

The --only-new option fetches the feed at addition time without sending the entries, making subsequent **run** execution consider them as already having been sent. It should be used when one is only interested in entries that are not yet in the feed at the time of running **add**.

- **run \[*--no-send*\] \[*--clean*\] \[*\<index\>* \[*\<index\>* ...\]\]**

  Scan the feeds and send emails for new items. This can be run in a cron job.

The --no-send option stops **r2e** from sending any email. This can be useful the first time you run it, as otherwise it would send an email for every available feed entry.

The --clean option reduces the database size by removing old entries. It forces a download of selected feeds or all feeds, and should only be used weekly or monthly.

If an *\<index\>* is specified, **r2e** will only download that feed. *\<index\>* can be either the feed name (as set by **add**) or the feed index (as shown by **list**).

- **list**

  List all the feeds in the database.

- **pause \[*\<index\>* \[*\<index\>* ...\]\]**

  Pause feeds (disable fetching).  The *\<index\>* option selects the feed(s) to pause (see **run** for possible values).  If no *\<index\>* is given, all feeds are paused.

- **unpause \[*\<index\>* \[*\<index\>* ...\]\]**

  Unpause feeds (enable fetching).

- **delete *\<index\>* \[*\<index\>* \[*\<index\>* ...\]\]**

  Remove a feed (or feeds) from the database.  The *\<index\>* option selects the feed(s) to delete (see **run** for possible values).

- **reset \[*\<index\>* \[*\<index\>* ...\]\]**

  Forget dynamic feed data (e.g. to re-send old entries).  The *\<index\>* option selects the feed(s) to reset (see **run** for possible values).  If no *\<index\>* is given, all feeds are reset.

- **opmlimport \[*\<path\>*\]**

  Import new feeds from OPML.  *\<path\>* is the file from which the OPML data will be read.  If *\<path\>* is not given **r2e** reads the data from stdin.

- **opmlexport \[*\<path\>*\]**

  Export all feeds to OPML.  *\<path\>* is the file to which the OPML data will be written.  If *\<path\>* is not given **r2e** writes the data to stdout.

## CONFIGURATION

The program's behavior can be controlled via the *$XDG\_CONFIG\_HOME/rss2email.cfg* (see also **FILES** and **ENVIRONMENT VARIABLES** below). The file format is similar to a Microsoft Windows INI file.  It is parsed by Python's ConfigParser class, so see the Python documentation at http://docs.python.org/3/library/configparser.html for format details.

The config file stores general configuration (applied to all feeds) in the **\[DEFAULT\]** section.  The **new** command will create a configuration file for you, which you can edit as you see fit.  The **add** command will add feed-specific sections.  To override any a setting for all feeds, change the value in the **\[DEFAULT\]** section.  To override a setting for a particular feed, add that setting to the feed-specific section.  Here is an example overriding **use-publisher-email** and **name-format** for the **feedname** feed.

```
[DEFAULT]
from = user@rss2email.invalid
force-from = False
use-publisher-email = False
name-format = {feed-title}: {author}
  ...
verbose = warning
[feed.feedname]
url = http://feed.url/somewhere.rss
use-publisher-email = True
name-format = {author} ({feed.title})
```

You can configure the following items:

### Addressing

- from

  The email address messages are from by default

- use-8bit

  Transfer-Encoding. For local mailing it is safe and convenient to use 8bit.

- force-from

  True: Only use the 'from' address. False: Use the email address specified by the feed, when possible.

- use-publisher-email

  True: Use the publisher's email if you can't find the author's. False: Just use the 'from' email instead.

- name-format

  If empty, only use the feed email address rather than friendly name plus email address.  Available attributes may include 'feed', 'feed-name', 'feed-url', 'feed-title', 'author', and 'publisher', but only 'feed', 'feed-name', and 'feed-url' are guaranteed.

- to

  Set this to default To email addresses.

### Fetching

- proxy

  Set an HTTP proxy (e.g. 'http://your.proxy.here:8080/')

- feed-timeout

  Set the timeout (in seconds) for feed server response

### Processing

- active

  True: Fetch, process, and email feeds. False: Don't fetch, process, or email feeds

- digest

  True: Send a single, multi-entry email per feed per rss2email run. False: Send a single email per entry.

- digest-type

  Message content-type for digests.  Valid values are 'multipart/digest' and 'multipart/mixed'.  The former is the default, but many mail user agents do not support it.

- date-header

  True: Generate Date header based on item's date, when possible. False: Generate Date header based on time sent.

- date-header-order

  A comma-delimited list of some combination of ('issued', 'created', 'modified', 'expired') expressing ordered list of preference in dates to use for the Date header of the email.

- bonus-header

  Set this to add bonus headers to all emails Example: bonus-header = 'Approved: joe@bob.org'

- trust-guid

  True: Receive one email per post. False: Receive an email every time a post changes.

- trust-link

  True: Receive one email per unique link url. False: Defer to trust-guid preference. Toggling this for existing feeds may result in duplicates, because the old entries will not be recorded under their new link-based ids.

- encodings

  To most correctly encode emails with international characters, we iterate through the list below and use the first character set that works.

- post-process

  User processing hooks.  Note the space after the module name. Example: post-process = 'rss2email.post\_process.downcase downcase\_message'

- digest-post-process

  User processing hooks for digest messages.  If 'digest' is enabled, the usual 'post-process' hook gets to message the per-entry messages, but this hook is called with the full digest message before it is mailed. Example: digest-post-process = 'rss2email.post\_process.downcase downcase\_message'

- subject-format

  The format for the Subject line.  Available attributes are 'feed', 'feed-name', 'feed-url', 'feed-title'.

### HTML conversion

- html-mail

  True: Send text/html messages when possible. False: Convert HTML to plain text.

- use-css

  Use CSS

- css

  Optional CSS styling

### html2text options

- unicode-snob

  Use Unicode characters instead of their ascii psuedo-replacements

- links-after-each-paragraph

  Put the links after each paragraph instead of at the end.

- inline-links

  Use inline, rather than reference, formatting for images and links.

- wrap-links

  Wrap links according to body width.

- body-width

  Wrap long lines at position. Any negative value for no wrapping, 0 for 78 width (compatibility), or any positive width.

### Mailing

- email-protocol

  Select protocol from: sendmail, smtp, imap, maildir

- sendmail

  Path to sendmail (or compatible)

### SMTP configuration

- smtp-auth

  Set to True to use SMTP AUTH

- smtp-username

  username for SMTP AUTH

- smtp-password

  password for SMTP AUTH

- smtp-server

  SMTP server

- smtp-ssl

  Connect to the SMTP server using SSL

### IMAP configuration

- imap-auth

  set to True to use IMAP auth.

- imap-username

  username for IMAP authentication

- imap-password

  password for IMAP authentication

- imap-server

  IMAP server

- imap-port

  IMAP port

- imap-ssl

  connect to the IMAP server using SSL

- imap-mailbox

  where we should store new messages

### Maildir configuration

- maildir-path

  Path of maildir to write messages into

- maildir-mailbox

  Mailbox within maildir-path to write messages into

### Miscellaneous

- user-agent

  String to use as HTTP User-Agent in web requests and as the User-Agent header in outgoing emails. If present, \_\_VERSION\_\_ and \_\_URL\_\_ are replaced with rss2email version number and webpage.

- verbose

  Verbosity (one of 'error', 'warning', 'info', or 'debug').

## FILES

- **$XDG\_CONFIG\_HOME/rss2email.cfg**

  If this file exists, it is read to configure the program.

- **$XDG\_DATA\_HOME/rss2email.json**

  The database of feeds. Use **r2e** to add, remove, or modify feeds, do not edit it directly.

## ENVIRONMENT VARIABLES

The environment variables used by **r2e** are all defined in the XDG Base Directory Specification, which aims to standardize locations for user-specific configuration and data files.

- **XDG\_CONFIG\_HOME**

  The preferred directory for configuration files.  Defaults to $HOME/.config.

- **XDG\_DATA\_HOME**

  The preferred directory for data files.  Defaults to $HOME/.local/share.

- **XDG\_RUNTIME\_DIR**

  The preferred directory for lockfiles.  Defaults to /tmp/rss2email-UID

- **XDG\_CONFIG\_DIRS**

  A colon ':' separated, preference ordered list of base directories for configuration files in addition to $XDG\_CONFIG\_HOME.  Defaults to /etc/xdg.  If multiple configuration files are found in this path, they will all be read by the ConfigParser class (see also CONFIGURATION above).

- **XDG\_DATA\_DIRS**

  A colon ':' separated, preference ordered list of base directories for data files.  Defaults to /usr/local/share/:/usr/share/.  Only the first matching file is used.

## AUTHORS

**rss2email was started by Aaron Swartz, and is currently maintained by** a group of people.  For a more complete list of contributors, see the AUTHORS file in the rss2email distribution.

## REPORTING BUGS

Report bugs by creating an issue at ⟨https://github.com/rss2email/rss2email⟩.
