Sistema de correo
El sistema de correo de Doggy está construido sobre Symfony Mailer y admite configuración de múltiples buzones, gestión de plantillas y envío asíncrono.
Descripción general
Archivos relacionados con el sistema de correo:
| Archivo | Descripción |
|---|---|
src/Service/MailService.php | Servicio de envío de correo |
src/Service/Security/EmailHtmlSanitizer.php | Filtrado seguro de HTML |
src/Entity/System/EmailConfig.php | Configuración de buzones |
src/Entity/System/EmailTemplate.php | Plantillas de correo |
src/Entity/System/EmailLog.php | Registro de envíos |
src/Entity/System/EmailFunctionBinding.php | Vinculación de funciones |
Interfaz de administración: App\Controller\Admin\EmailConfigController
Plantillas de correo
Las plantillas de correo se almacenan en la base de datos (entidad EmailTemplate) y admiten edición visual:
Directorio de plantillas: templates/admin/email/
editor.html.twig: editor de plantillasindex.html.twig: lista de plantillaspreview.html.twig: vista previa de plantillas
Enviar correo
El envío se realiza a través de 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: 'Bienvenido a Doggy',
template: 'welcome',
params: [
'name' => $employee->getName(),
]
);
}
}Seguridad HTML
EmailHtmlSanitizer filtra el contenido HTML antes del envío:
- Elimina elementos peligrosos como
script,iframe,object - Previene la inyección XSS
- Protege la seguridad de los destinatarios
Vinculación de funciones
EmailFunctionBinding asocia las funciones de correo con eventos del sistema para habilitar el envío automatizado:
- Correo de restablecimiento de contraseña
- Notificación de activación de cuenta
- Notificaciones de alerta del sistema
Configuración
yaml
# config/packages/mailer.yaml
framework:
mailer:
dsn: '%env(MAILER_DSN)%'