L’envoi d’e-mail à partir d’une application web est généralement un processus très compliqué à déboguer. L’accès au serveur d’envoi de mail est supposé être restreint aux serveurs de production (donc injoignable depuis un serveur de éveloppement) et quand bien même ce ne serait pas le cas, il reste toujours cette épée de Damoclès au dessus de nos têtes, nous rappelant qu’au moindre faux pas, un mail ayant pour contenu “tu vas marcher saloperie?” pourrait être envoyé à des gens haut-placés chez le client.

Chers amis, n’ayez plus peur! Une simple ligne de commande et les bibliothèques python vont vous sauver :

# python -m smtpd -n -c DebuggingServer localhost:25

Si vous ne pouvez pas lancer ce script en tant que super-utilisateur, il vous faudra utiliser un port supérieur à 1024. Par exemple :

$ python -m smtpd -n -c DebuggingServer localhost:25000

(Je rappelle que, # et $ sont la marque du prompt et ne font pas partie de la commande)

Si vous avez les bonnes bibliothèques python d’installées, cette commande va instancier une classe DebuggingServer qui va afficher dans la console tous les mails qui lui seront transmis, au lieu de les envoyer aux destinataires.

Il vous suffit donc de faire pointer la configuration de votre application sur le bon hôte et le bon port (au besoin, adaptez la commande pour choisir autre chose que localhost) et tous les mails qu’enverra votre application se retrouveront affichés dans votre terminal.

Evidemment, vous pourrez agrémenter cette commande d’une redirection de sortie pour écrire dans un fichier :

$ python -m smtpd -n -c DebuggingServer localhost:25000 >> emails.log

Pour information, j’ai tout piqué sur cette page-ci : https://muffinresearch.co.uk/fake-smtp-server-with-python/