E-Mail-System
Das Doggy-E-Mail-System basiert auf Symfony Mailer und unterstützt die Konfiguration mehrerer Mailboxen, Vorlagenverwaltung und asynchrones Versenden.
Übersicht
Zugehörige Dateien des E-Mail-Systems:
| Datei | Beschreibung |
|---|---|
src/Service/MailService.php | E-Mail-Versanddienst |
src/Service/Security/EmailHtmlSanitizer.php | HTML-Sicherheitsfilter |
src/Entity/System/EmailConfig.php | Mailbox-Konfiguration |
src/Entity/System/EmailTemplate.php | E-Mail-Vorlagen |
src/Entity/System/EmailLog.php | Versandprotokolle |
src/Entity/System/EmailFunctionBinding.php | Funktionsbindung |
Verwaltungsoberfläche: App\Controller\Admin\EmailConfigController
E-Mail-Vorlagen
E-Mail-Vorlagen werden in der Datenbank gespeichert (EmailTemplate-Entität) und unterstützen visuelle Bearbeitung:
Vorlagenverzeichnis: templates/admin/email/
editor.html.twig: Vorlagen-Editorindex.html.twig: Vorlagenlistepreview.html.twig: Vorlagenvorschau
E-Mail senden
Versand über 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(),
]
);
}
}HTML-Sicherheit
EmailHtmlSanitizer filtert HTML-Inhalte vor dem Versand:
- Entfernt gefährliche Elemente wie
script,iframe,object - Schutz vor XSS-Injektionen
- Sicherheit der Empfänger
Funktionsbindung
EmailFunctionBinding verknüpft E-Mail-Funktionen mit Systemereignissen für automatisierten Versand:
- Passwort-Reset-E-Mails
- Benachrichtigungen zur Kontofreischaltung
- Systemalarm-Benachrichtigungen
Konfiguration
yaml
# config/packages/mailer.yaml
framework:
mailer:
dsn: '%env(MAILER_DSN)%'