Skip to content

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 :

FichierDescription
src/Service/MailService.phpService d'envoi de messages
src/Service/Security/EmailHtmlSanitizer.phpFiltrage de sécurité HTML
src/Entity/System/EmailConfig.phpConfiguration des comptes e-mail
src/Entity/System/EmailTemplate.phpModèles d'e-mail
src/Entity/System/EmailLog.phpJournal d'envoi
src/Entity/System/EmailFunctionBinding.phpLiaison 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èles
  • index.html.twig : liste des modèles
  • preview.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)%'

Open source sous licence MIT | Copyright © 2026 Doggy