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 內容:

  • 移除 scriptiframeobject 等危險元素
  • 防禦 XSS 注入
  • 保護收件人安全

功能綁定

EmailFunctionBinding 將電子郵件功能與系統事件關聯,實作自動化傳送:

  • 密碼重設電子郵件
  • 帳號啟用通知
  • 系統警示通知

設定

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

基於 MIT 協議開源 | Copyright © 2026 Doggy