Skip to content

메일 시스템

Doggy 메일 시스템은 Symfony Mailer 기반으로 구축되었으며 다중 사서함 설정, 템플릿 관리, 비동기 발송을 지원합니다.

개요

메일 시스템 관련 파일:

파일설명
src/Service/MailService.php메일 발송 서비스
src/Service/Security/EmailHtmlSanitizer.phpHTML 보안 필터링
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)%'

MIT 라이선스 오픈소스 | Copyright © 2026 Doggy