메일 시스템
Doggy 메일 시스템은 Symfony Mailer 기반으로 구축되었으며 다중 사서함 설정, 템플릿 관리, 비동기 발송을 지원합니다.
개요
메일 시스템 관련 파일:
| 파일 | 설명 |
|---|---|
src/Service/MailService.php | 메일 발송 서비스 |
src/Service/Security/EmailHtmlSanitizer.php | HTML 보안 필터링 |
src/Entity/System/EmailConfig.php | 사서함 설정 |
src/Entity/System/EmailTemplate.php | 메일 템플릿 |
src/Entity/System/EmailLog.php | 발송 로그 |
src/Entity/System/EmailFunctionBinding.php | 기능 바인딩 |
관리 인터페이스: App\Controller\Admin\EmailConfigController
메일 템플릿
메일 템플릿은 데이터베이스(EmailTemplate 엔티티)에 저장되며 시각적 편집을 지원합니다:
템플릿 디렉터리: templates/admin/email/
editor.html.twig: 템플릿 편집기index.html.twig: 템플릿 목록preview.html.twig: 템플릿 미리보기
메일 발송
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 보안
EmailHtmlSanitizer는 발송 전에 HTML 콘텐츠를 필터링합니다:
script,iframe,object등 위험 요소 제거- XSS 주입 방지
- 수신자 안전 보호
기능 바인딩
EmailFunctionBinding은 메일 기능을 시스템 이벤트와 연결하여 자동 발송을 구현합니다:
- 비밀번호 재설정 메일
- 계정 활성화 알림
- 시스템 경보 알림
설정
yaml
# config/packages/mailer.yaml
framework:
mailer:
dsn: '%env(MAILER_DSN)%'