Système de messagerie
Le système de messagerie de Doggy est construit sur Symfony Mailer, avec prise en charge de la configuration multi-comptes, de la gestion des modèles et de l'envoi asynchrone.
Aperçu
Fichiers associés au système de messagerie :
| Fichier | Description |
|---|---|
src/Service/MailService.php | Service d'envoi de messages |
src/Service/Security/EmailHtmlSanitizer.php | Filtrage de sécurité HTML |
src/Entity/System/EmailConfig.php | Configuration des comptes e-mail |
src/Entity/System/EmailTemplate.php | Modèles d'e-mail |
src/Entity/System/EmailLog.php | Journal d'envoi |
src/Entity/System/EmailFunctionBinding.php | Liaison de fonctionnalité |
Interface d'administration : App\Controller\Admin\EmailConfigController
Modèles d'e-mail
Les modèles d'e-mail sont stockés en base de données (entité EmailTemplate) et prennent en charge l'édition visuelle :
Répertoire des modèles : templates/admin/email/
editor.html.twig: éditeur de modèlesindex.html.twig: liste des modèlespreview.html.twig: aperçu des modèles
Envoyer un e-mail
Envoi via MailService :
php
use App\Service\MailService;
class NotificationService
{
public function __construct(private MailService $mailService) {}
public function sendWelcome(Employee $employee): void
{
$this->mailService->send(
to: $employee->getEmail(),
subject: '欢迎加入 Doggy',
template: 'welcome',
params: [
'name' => $employee->getName(),
]
);
}
}Sécurité HTML
EmailHtmlSanitizer filtre le contenu HTML avant l'envoi :
- Supprime les éléments dangereux tels que
script,iframe,object - Prévention des injections XSS
- Protège la sécurité des destinataires
Liaison de fonctionnalité
EmailFunctionBinding associe les fonctionnalités e-mail aux événements système pour permettre l'envoi automatisé :
- E-mails de réinitialisation de mot de passe
- Notifications d'activation de compte
- Notifications d'alerte système
Configuration
yaml
# config/packages/mailer.yaml
framework:
mailer:
dsn: '%env(MAILER_DSN)%'