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