Notification d'émail via Python
Je vous présente aujourd’hui un petit script Python qui vous informe de l’arrivée de nouveaux messages sur votre compte de messagerie de courrier électronique.
Préambule et mise en situation :
J’ai écris ce script pour faire plaisir à ma maman dont le pc tourne sous Ubuntu Mate 16.04, l’applet mate-indicator-applet n’a plus le même comportement qu’auparavant et ne propose donc plus la possibilité de notifier l’utilisateur de la présence d’un nouveau courrier électronique.
Je précise que c’est mon tout premier script en Python, j’attends donc avec impatience vos remarques et commentaires pour améliorer la chose .
Sources, documentations et dépendances :
Je me suis largement inspiré de la lecture des pages suivantes :
- Desktop notifications
- Raspberry Pi E-mail Notifier Using LEDs
- Desktop Notifications in Python with Libnotify
Le script, pour fonctionner correctement, requiert l’installation de la librairie imapclient pour Python.
Je l’ai donc installée via PIP que j’ai dû également installé via les commandes :
sudo apt-get install build-essential libssl-dev libffi-dev python-dev pip install imapclient
Le script :
Voici le code du script mail-notifier.py que vous installerez où bon vous semble, par exemple dans un sous-dossier de votre dossier personnel :
#!/usr/bin/python import gi gi.require_version('Notify', '0.7') from gi.repository import Notify from imapclient import IMAPClient import time HOSTNAME = 'ServeurImap' # sans http:// ! USERNAME = 'Identiant' PASSWORD = 'MotDePasse' MAILBOX = 'Inbox' NEWMAIL_OFFSET = 0 # my unread messages never goes to zero, yours might MAIL_CHECK_FREQ = 60 # check mail every 60 seconds while True: server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD) folder_status = server.folder_status(MAILBOX, 'UNSEEN') newmails = str(folder_status['UNSEEN']) if newmails > NEWMAIL_OFFSET: Notify.init("Courrier") Notify.Notification.new("Courrier", "Vous avez " + newmails + " nouveu(x) message(s).", "mail-unread").show() Notify.uninit() time.sleep(MAIL_CHECK_FREQ)
Vous prendrez soin de le modifier quelque peu pour renseigner l’url du serveur imap, l’identiant et le mot de passe de votre compte de courrier électronique.
Vous devez également rendre le script exécutable, soit de façon graphique en modifiant les permissions du script grâce à Caja, soit avec la commande suivante :
chmod +x mail_notifier.py
Il ne vous plus qu’à rajouter un lanceur dans les applications lancées au démarrage depuis le menu principal de Mate en allant dans Système > Préférences > Personnel > Applications au démarrage.
Après un redémarrage de votre ordinateur, toutes les minutes et en cas d’arrivé d’au moins un nouveau message de courrier électronique, vous en serez informé par une bulle de notification qui se ferme automatiquement au bout d’un certain temps, rien ne s’affichera dans le cas contraire.
Pour aller plus loin, je vous informe de l’existence du script Unity Mail (qui gère plusieurs comptes de courrier électronique) censé fonctionner également sous Mate Desktop contrairement à ce que son nom suggère mais je n’ai pas trouvé comment le compiler et l’installer à partir des fichiers sources .
Edit du 23/10/2016
J’ai trouvé, entre temps, le logiciel mailnag qui satisfait parfaitement au besoin que j’avais, de plus, ce script est directement présent dans les dépôts d’Ubuntu-Mate et permet la gestion de multiples comptes de courrier électronique .
Les commentaires sont fermés.