Vue normale

Reçu — 6 janvier 2026

Comment ManoMano a modernisé son système d’envoi d’e-mails

6 janvier 2026 à 12:16

Plutôt que des tables imbriquées et du CSS inline, utilisons MJML*.

ManoMano a fait ce choix pour générer des e-mails responsive. Le contexte : un projet de modernisation du système assurant l’envoi de ces messages.

Auparavant, il y avait un monolithe en PHP. Désormais, il y a une plate-forme Node.js/Kotlin.

L’ancien service était basé sur des bibliothèques obsolètes, d’autant plus difficiles à mettre à jour que l’expertise PHP s’était progressivement perdue en interne. Il était par ailleurs étroitement lié à des services tels que RabbitMQ, donc impossible à maintenir de manière indépendante. Des années de correctifs avaient plus globalement alourdi la codebase, compliquant les changements et les rendant plus risqués. L’écriture des templates en Twig et en HTML brut posait de plus des problèmes de compatibilité en fonction des clients de messagerie.

Une approche configuration over code

Le service d’origine était déclenché par des appels API ou par des événements RabbitMQ. Avant d’envoyer un e-mail, il fallait l’enrichir en récupérant des éléments sur plusieurs services externes. Des dépendances qui tendaient à fragiliser l’ensemble.

Pour favoriser le décommisionnement, ManoMano a isolé cette logique en un composant email-merger. Ses requêtes sont centralisées sur la nouvelle plate-forme aux côtés des requêtes « modernes » – qui ne passent plus par le monolithe – par un service Kotlin (email-sender). Celui-ci suit une approche configuration over code : toute la configuration est gérée via le back-end central, sans avoir à écrire de code.

La passerelle réceptionnant les requêtes s’appuie sur PostgreSQL pour le stockage d’état et de configuration. Elle transmet les événements à un nœud de travail qui récupère un template et fait la liaison avec le service SMTP. Le bus de messagerie RabbitMQ a été remplacé par du Kafka, pour l’élasticité, la résilience et le retry intégré.

Une séparation plus claire des responsabilités

Le fournisseur de templates (email-templates) est écrit en Node.js. Il évite aux développeurs front-end d’avoir à évoluer dans un environnement PHP. La bibliothèque react-mjml leur permet de créer des templates comme ils créent des composants React.

Épargner aux développeurs React le travail en environnement PHP a déchargé l’équipe back-end de nombre de requêtes. Dans le même temps, la centralisation des templates assure une plus grande cohérence des e-mails. Et les responsabilités sont plus claires : le back n’est plus impliqué dans les changements visuels, le front ne l’est plus dans la logique de delivery.

Mi-novembre 2025, ManoMano avait migré environ 80 % de son trafic mail sur la nouvele plate-forme. Dont ses communications les plus critiques (confirmations de commandes, notifications d’envois, réinitialisations de mots de passe).

* Mailjet Markup Language, publié en source ouverte (licence MIT) en 2016 par Mailjet. Ce langage déclaratif est transpilé en HTML responsive.

Illustration générée par IA

The post Comment ManoMano a modernisé son système d’envoi d’e-mails appeared first on Silicon.fr.

❌