電子郵件系統
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)%'