Skip to content

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:

ArchivoDescripción
src/Service/MailService.phpServicio de envío de correo
src/Service/Security/EmailHtmlSanitizer.phpFiltrado seguro de HTML
src/Entity/System/EmailConfig.phpConfiguración de buzones
src/Entity/System/EmailTemplate.phpPlantillas de correo
src/Entity/System/EmailLog.phpRegistro de envíos
src/Entity/System/EmailFunctionBinding.phpVinculació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 plantillas
  • index.html.twig: lista de plantillas
  • preview.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)%'

Código abierto bajo MIT | Copyright © 2026 Doggy