devzair / mail-logger-bundle
Symfony bundle to log all emails sent via Symfony Mailer
Installs: 29
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.1
- doctrine/orm: ^2.14 || ^3.0
- symfony/config: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
- symfony/mailer: ^6.0 || ^7.0
- symfony/mime: ^6.0 || ^7.0
- symfony/validator: ^7.2
Requires (Dev)
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2025-06-19 21:32:24 UTC
README
Un bundle Symfony léger, modulaire et moderne pour logger automatiquement tous les emails envoyés via Symfony Mailer.
✨ Pourquoi utiliser ce bundle ?
Dans les projets Symfony, on envoie souvent des emails (confirmation d’inscription, notifications, support, etc.).
Mais en cas de bug ou de doute, il est difficile de savoir :
- Quel email a été envoyé ?
- À qui ?
- Avec quel contenu ?
- Avec quel résultat (succès / échec) ?
❌ Problèmes classiques sans ce bundle :
Situation | Conséquence |
---|---|
Pas de trace des envois | Impossibilité de diagnostiquer un problème de mail |
Pas de logs centralisés | Impossible de prouver un envoi ou de refaire un test |
Erreurs silencieuses | Les échecs SMTP passent inaperçus |
✅ Ce que ce bundle vous apporte :
- 📦 Une entité
LoggedEmail
persistée automatiquement - 📬 Une écoute des événements
SentMessageEvent
etFailedMessageEvent
- 🧠 Un
EmailLogger
injectable et configurable - 🔍 Une commande CLI
mail:log
pour voir les derniers mails - 🛠 Une commande
mail:test
pour tester facilement le système de mail - 🔄 Configuration activable par paramètre
mail_logger.enabled
🔧 Installation
Ajoutez le bundle à votre projet Symfony :
composer require devzair/mail-logger-bundle composer require symfony/mailer symfony/mime ⚙️ Configuration 1. Déclarez le paramètre pour activer le logger : # config/packages/parameters.yaml parameters: mail_logger.enabled: true 2. Injectez ce paramètre dans le service : # config/services.yaml DevZair\MailLoggerBundle\Service\EmailLogger: arguments: $loggingEnabled: '%mail_logger.enabled%' 🧪 Commandes disponibles: 🔍 Voir les 10 derniers emails envoyés php bin/console mail:log 🧾 Affichage JSON (pour API, tests, exports) php bin/console mail:log --json 🔢 Limiter le nombre de résultats php bin/console mail:log --limit=25 🧪 Envoi d’un email de test php bin/console mail:test 📦 Lister tous les paramètres du bundle php bin/console mail:config 🧠 Architecture technique Élément | Rôle LoggedEmail | Entité Doctrine pour stocker les emails EmailLogger | Service principal injecté, gère la persistance EmailLoggerSubscriber | EventSubscriber qui écoute les envois de mails MailLogCommand | Commande CLI pour afficher les logs MailTestCommand | Commande CLI pour envoyer un mail test MailLoggerBundleConfigCommand | Commande CLI pour afficher tous les paramètres du bundle 🧰 Fonctionnement Symfony envoie un mail via MailerInterface Le bundle écoute les événements SentMessageEvent et FailedMessageEvent Le logger transforme les adresses (objet Address) en données JSON (name + email) L'entité est persistée automatiquement en base Les commandes permettent de consulter ou tester les envois 📌 Prérequis Symfony >= 6.3 / 7.x PHP >= 8.1 symfony/mailer, symfony/mime Doctrine ORM