J’ai cherché sur le net un outil permettant de recevoir des flux RSS par email. En effet je préfère recevoir certains flux RSS par email, notamment car ceux-ci comportent quasiment aucune image, et il se trouve que je ne lis mes flux RSS que via ma boite email. En fait je reçois mes flux via Google Reader, et je visite les sites qui proposent des choses à voir (genre des photos ou des vidéos), et je m’envoie les billets par email des sites qui proposent du texte (quand les billets m’intéressent, bien sûr). Notez que quand quelqu’un bride son flux (ou ne met que les quelques premiers mots), j’ai juste à aller très rapidement sur le site en question pour copier le contenu du billet dans un mail et me l’envoyer. A raison d’une bonne cinquantaine de billets que je m’envoie par jour, je suis donc le premier destinataire de mes propres mails ! Mais il se trouve que c’est toujours les mêmes flux que j’aime lire en entier, et qui ne mettent jamais d’images. Donc c’est toujours les mêmes que je m’envoie par email. Donc il me fallait un service pour automatiser le processus. Or je n’ai pas trouvé de service proposant celà de façon correcte : soit ils limitent dans leur version gratuite le nombre de flux à 5, avec une fréquence de mise à jour limitée à une fois par jour (je vous parle de FeedMyInbox). (Edit : j’ai parlé sur ce blog du site RSS FWD qui semble être toujours en ligne.) Notez que quand les flux sont sous FeedBurner, y’a aussi moyen de s’inscrire via mail, mais je crois que du coup les envois sont journaliers également, ce qui ne me conviens pas.
En cherchant un peu sur le web, j’ai donc finit par trouver un service en python assez simple à installer sur un serveur : Rss2Email. Voilà comment l’installer.
Sur votre serveur, faites :
sudo apt-get install rss2email
Notez que rss2email utilise python pour fonctionner, donc il est probable que APT vous disent qu’il faut installer un paquet supplémentaire (ou préalablement) : suivez ce qu’on vous dit et installez le paquet nécessaire.
Donnez ensuite à rss2email une adresse de destinataire des flux :
r2e new mon_email@domaine.com
Puis vous associez un flux à cette adresse (ceux que j’ai installés : DF et PL). Voici un exemple d’ajout :
r2e add http://feeds.feedburner.com/Abricocotierfr
Pour vérifier vos ajout, faites simplement :
r2e list
Pour supprimer la 2e entrée (par exemple) faites juste :
r2e delete 2
Une fois que vous avez fini vos ajouts, faites :
r2e run
… ou bien
r2e run –no-send si vous voulez que rss2email ne vous envoie que les flux qui seront publiés à partir de maintenant.
Notez bien qu’on peut configurer un peu davantage rss2email, notamment avec une URL de sender, ou en activant le HTML, mais il s’agit normalement de le faire dans le fichier config.py que je n’ai pas trouvé à la racine de mon /home comme indiqué sur le web.
Edit : en fait il faut créer soit-même un fichier config.py dans /home/son_login à partir du config-example.py founit dans les sources.
Comme sur mon serveur j’utilise SendMail, il m’a bien fallu faire 2-3 modifications dans ce fichier config.py. Voilà les lignes modifiées :
DEFAULT_FROM = "mon_adresse_perso@gmail.com" HTML_MAIL = 1 SMTP_SEND = 1 SMTP_SERVER = "localhost"
Enfin, on règle dans /etc/cron.d la fréquence de lancement de rss2email.
vim /etc/crontab
et on ajoute à la fin du fichier la ligne suivante :
#*/10 * * * * /usr/bin/r2e run
Ce qui lancera rss2email toutes les 10 minutes.
(relancez cron quand même pour être sûr que les modifs ont été prises en compte :
sudo /etc/init.d/cron restart
)
Notez qu’il y a ici un tuto pour installer à Rss2Mail une interface graphique (accessible depuis l’extérieur).
Problèmes rencontrés
Je ne l’ai pas mis dans le corps de mon billet, mais j’ai eu l’erreur HTTP 550 quand je lançais rss2email :
login@monserveur~/.rss2email $ r2e run === SEND THE FOLLOWING TO rss2email@aaronsw.com === E: could not parse http://feeds.feedburner.com/Abricocotierfr Traceback (most recent call last): File "/usr/share/rss2email/rss2email.py", line 650, in run smtpserver = send(fromhdr, tohdr, subjecthdr, content, contenttype, extraheaders, smtpserver) File "/usr/share/rss2email/rss2email.py", line 184, in send smtpserver.sendmail(sender, recipient, msg_as_string) File "/usr/lib/python2.5/smtplib.py", line 703, in sendmail raise SMTPRecipientsRefused(senderrs) SMTPRecipientsRefused: {'mon_adresse_perso@gmail.com': (550, '#5.1.0 Address rejected mon_adresse_perso@gmail.com')} rss2email 2.61 feedparser 4.1 html2text 2.29 Python 2.5.2 (r252:60911, Jan 20 2010, 23:14:04) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] === END HERE ===
En fait ce problème venait du fait que je n’avais pas réglé l’adresse du SMTP sortant. Elle était à l’origine à :
SMTP_SERVER = "smtp.yourisp.net:25"
que je l’ai changé en
SMTP_SERVER = "localhost"
Et cela a réglé le problème.
Hello,
Top ce truc ! Cela permet-il de récupérer le contenu dans ma boite mail d’un flux RSS tronqué ?
Non ca te récupère vraiment le flux. Par contre je crois que tu as des sites qui te génèrent des flux complets à partir de flux tronqués. Donc tu n’as plus qu’à te brancher sur ces flux complets.
Je vois que je ne suis pas le seul à chercher… Bon, pyton, c’est pas trop mon language, donc je vais continuer à chercher.
Depuis que j’utilise feedmix (http://feedmix.novaclic.com, gratuit sans limitation), il ne me manque plus que les alertes par email pour me faire mon suivi d’actualité par thématique aux petits oignons…
Pour avoir les flux RSS complet : http://blog.tomamplius.net/index.php?post/2010/12/09/Avoir-le-contenu-des-flux-rss-en-entier