邮件系统
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)%'