Skip to content

Sistema de email

O sistema de email do Doggy é construído sobre o Symfony Mailer, com suporte para múltiplas contas de email, gestão de templates e envio assíncrono.

Visão geral

Ficheiros relacionados com o sistema de email:

FicheiroDescrição
src/Service/MailService.phpServiço de envio de emails
src/Service/Security/EmailHtmlSanitizer.phpFiltragem de segurança HTML
src/Entity/System/EmailConfig.phpConfiguração de contas de email
src/Entity/System/EmailTemplate.phpTemplates de email
src/Entity/System/EmailLog.phpRegisto de envios
src/Entity/System/EmailFunctionBinding.phpLigação de funcionalidades

Interface de administração: App\Controller\Admin\EmailConfigController

Templates de email

Os templates de email são armazenados na base de dados (entidade EmailTemplate), com suporte para edição visual:

Diretório de templates: templates/admin/email/

  • editor.html.twig: editor de templates
  • index.html.twig: lista de templates
  • preview.html.twig: pré-visualização de templates

Enviar emails

O envio é feito através do 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(),
            ]
        );
    }
}

Segurança HTML

EmailHtmlSanitizer filtra o conteúdo HTML antes do envio:

  • Remove elementos perigosos como script, iframe, object
  • Previne injeção XSS
  • Protege a segurança do destinatário

Ligação de funcionalidades

EmailFunctionBinding associa funcionalidades de email a eventos do sistema, permitindo o envio automático:

  • Email de redefinição de palavra-passe
  • Notificação de ativação de conta
  • Notificação de alertas do sistema

Configuração

yaml
# config/packages/mailer.yaml
framework:
  mailer:
    dsn: '%env(MAILER_DSN)%'

Código aberto sob MIT | Copyright © 2026 Doggy