تخطَّ إلى المحتوى

تكوين SMTP البريد للمشروع

يمكن لكل مشروع Jambo أن يكون له خادم SMTP خاص به. يتم استخدام البريد لإرسال الرسائل (نماذج الاتصال، إعادة تعيين كلمة المرور، إلخ). يتم تشفير كلمة المرور على الخادم باستخدام XSalsa20-Poly1305.

GET /api/projects/{projectUuid}/settings/mailer
PUT /api/projects/{projectUuid}/settings/mailer
POST /api/projects/{projectUuid}/settings/mailer/test

المصادقة

يتطلب إما:

  • جلسة مسؤول صالحة (للوحة الإدارة)
  • رمز API مع صلاحية create
Terminal window
Authorization: Bearer TOKEN_API

GET — قراءة تكوين SMTP

Terminal window
curl https://your-domain.com/api/projects/{projectUuid}/settings/mailer \
-H "Authorization: Bearer TOKEN_API"

الاستجابة (مُكوّن)

{
"data": {
"host": "smtp.resend.com",
"port": 587,
"username": "resend",
"encryption": "tls",
"from_email": "noreply@example.com",
"from_name": "مشروعي",
"enabled": true
}
}

PUT — إنشاء أو تعديل تكوين SMTP

Terminal window
curl -X PUT https://your-domain.com/api/projects/{projectUuid}/settings/mailer \
-H "Authorization: Bearer TOKEN_API" \
-H "Content-Type: application/json" \
-d '{
"host": "smtp.gmail.com",
"port": 587,
"username": "apikey",
"password": "كلمة-المرور",
"encryption": "tls",
"from_email": "noreply@example.com",
"from_name": "مشروعي",
"enabled": true
}'
الحقلالنوعمطلوبالوصف
hoststringلامضيف SMTP (متحقق: لا IP خاص)
portintegerلامنفذ SMTP. مسموح: 25, 465, 587, 2525
usernamestringلااسم المستخدم SMTP
passwordstringلاكلمة مرور SMTP (مشفرة عند التخزين)
encryptionstringلاtls, ssl, أو none
from_emailstringلابريد المرسل
from_namestringلااسم المرسل
enabledbooleanلاتفعيل أو تعطيل البريد

POST — إرسال بريد تجريبي

Terminal window
curl -X POST https://your-domain.com/api/projects/{projectUuid}/settings/mailer/test \
-H "Authorization: Bearer TOKEN_API"

الاستجابة (نجاح)

{ "sent": true }

الاستجابة (فشل)

{ "error": "فشل الإرسال. تحقق من تكوين SMTP." }

رموز الحالة

الحالةالوصف
200تمت القراءة أو التعديل بنجاح
400مضيف غير صالح أو منفذ غير صالح
403تم رفض الوصول
404المشروع غير موجود
422البريد غير مُكوّن أو معطل

الإرسال البرمجي

use App\Service\ProjectMailerService;
use App\Message\Attachment;
$mailerService->send(
project: $project,
to: 'client@example.com',
subject: 'مرحباً!',
body: 'نص احتياطي',
htmlBody: '<h1>مرحباً!</h1><p>شكراً لتسجيلك.</p>',
replyTo: 'support@example.com',
cc: ['manager@example.com'],
bcc: ['archive@example.com'],
attachments: [
new Attachment(
content: file_get_contents('/path/report.pdf'),
filename: 'تقرير_شهري.pdf',
mimeType: 'application/pdf',
),
],
);

يتم إرسال الرسائل بشكل غير متزامن عبر Symfony Messenger وتسجيلها في جدول email_log.