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:
| Ficheiro | Descrição |
|---|---|
src/Service/MailService.php | Serviço de envio de emails |
src/Service/Security/EmailHtmlSanitizer.php | Filtragem de segurança HTML |
src/Entity/System/EmailConfig.php | Configuração de contas de email |
src/Entity/System/EmailTemplate.php | Templates de email |
src/Entity/System/EmailLog.php | Registo de envios |
src/Entity/System/EmailFunctionBinding.php | Ligaçã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 templatesindex.html.twig: lista de templatespreview.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)%'