J'ai développé un petit bout de logiciel nommé, sans grande inspiration, SRmail pour "Simple Rest Mail" avec les technos que j'apprécie : le langage Python et le framework Web Flask. Le but de SRmail est de fournir un service local de récupération et d'envoi de courriels à d'autres applications. En gros, c'est une brique logicielle à l'écoute sur l'interface **localhost** qui permet de lire et d'envoyer des messages à travers une API Restful. J'insiste sur le terme local car l'API n'est absolument pas sécurisée : un fichier de configuration donne les pleins pouvoirs à SRmail pour gérer un compte par les protocoles IMAP et SMTP. L'intérêt c'est de centraliser la complexité de gestion des e-mails et de mutualiser un service entre plusieurs applications en plaçant la barre au niveau applicatif et non pas système. Le code et la documentation sont [sur mon GitHub](https://github.com/kianby/srmail). Ça s'installe facilement à la sauce Python dans un *virtualenv* de préférence, avec le gestionnaire de paquets **pip** pour récupérer les dépendances. Voici un exemple d'envoi d'e-mail en Python : ```python import requests headers = {'Content-Type': 'application/json; charset=utf-8'} msg = { 'to': 'bill@phoenix.com', 'subject': 'Got it', 'content': 'See you soon!\n\n-- John' } r = requests.post('http://localhost:8000/mbox', data=json.dumps(msg), headers=headers) if r.status_code == 200: logger.debug('Email for %s posted' % to_email) else: logger.warn('Cannot post email for %s' % to_email) ``` Et voici le même exemple en ligne de commande avec CURL : ```shell curl -X POST -H "Content-Type: application/json; charset=utf-8" -d '{"to":"bill@phoenix.com", "subject":"Got it", "content":"See you soon!\n\n-- John"}' http://localhost:8000/mbox ``` Plutôt que de faire du *polling* pour voir si de nouveaux messages sont arrivés, on peut définir la fréquence de polling au niveau de SRmail ainsi que des URL de notification vers lesquelles seront postés les messages au format JSON. Pour le déploiement de mes applications Python j'utilise [Supervisor](/supervisor-gestion-de-processus.html) qui permet de s'abstraire du système d'init (SysV, OpenRC, systemd). Voilà c'est sans prétention un outil qui peut vous être utile.