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 :

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.