نظام البريد الإلكتروني
يعتمد نظام البريد الإلكتروني في 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)%'