An adaptation of rss2email that uses IMAP directly.
What does it look like?
Well, with the shipping CSS in
config.py, it looks like this:
What about mobile?
Well, it works fine with the Gmail app on both Android and iOS, as well as the native IMAP clients:
As long as you sync, all the text will be available off-line (images are cached at the whim of the MUA).
The Gmail app ignores CSS and may have weird behaviors with long bits of text, though.
- NEW: Automatically file away messages read after one day instead of on every run
- Optional (naive) summarization of news items at the top of each item (see
- E-mail is injected directly via IMAP (so no delays or hassles with spam filters)
- Feeds can be grouped into IMAP folders -- no inbox clutter!
- Generates E-mail headers for threading, so a post that references another post (or that includes the same link) will show up as a thread on decent MUAs. Also, posts from the same feed will be part of the same thread)
- Can (optionally) include images inline (as
data:URIs for now -- which only works properly on iOS/Mac -- soon as MIME attachments)
- Can (optionally) remove read (but not flagged) items automatically
Given that I've only had to tweak one thing after two years of continued use, I'd say this is more than stable. I've gone off and built a multi-threaded app with a SQLite feed store called bottle-fever, but there's only so much free time, and even though this code is crammed with hideous legacy idioms, it works as is.
Come 2016, I switched to Feedly because the user experience on the iPad using Reeder was a little better.
Other projects I've come across that traveled this path in other languages:
- greghendershott/feeds2gmail, using Racket
- Gonzih/feeds2imap.clj, using Clojure
- rcarmo/go-rss2imap my attempt at tweaking a Go version
Exercises For The Reader
- Test nested folders (am only using single folders, not a nested hierarchy, so this might break)
- Automatic message categorization using Bayesian filtering and NLTK
- Better reference tracking to identify 'hot' items
- Figure out a nice way to do favicons (X-Face is obsolete, and so is X-Image-URL)
Here Be Dragons
Be aware that this works and is easy to hack, but uses old Python idioms and could do with some refactoring (PEP-8 zealots are sure to cringe as they read through the code -- I know I find it hideous, but it was a quick hack and has been working reliably for me for over two years now).