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