メールシステム
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)%'