إنتقل إلى المحتوى الرئيسي

مشكلات إرسال البريد الإلكتروني

استكشاف أخطاء تسليم البريد الإلكتروني خطوة بخطوة.


الخطوة 1: التحقق من الأساسيات

# تحقق من إعدادات SMTP في .env
grep MAIL_ .env

تحقق من:

  • MAIL_MAILER=smtp (وليس log أو null)
  • MAIL_HOST صحيح
  • MAIL_PORT صحيح (587 لـ TLS، 465 لـ SSL)
  • MAIL_USERNAME وMAIL_PASSWORD مُملَّآن
  • MAIL_ENCRYPTION=tls (أو ssl)

الخطوة 2: الاختبار عبر لوحة الإدارة

  1. انتقل إلى الإدارة > الإعدادات > البريد الإلكتروني
  2. انقر إرسال بريد إلكتروني تجريبي
  3. تحقق من رسالة الخطأ إذا فشل الإرسال

الخطوة 3: الاختبار عبر سطر الأوامر

php artisan tinker
Mail::raw('Test', function ($m) {
$m->to('[email protected]')->subject('Test');
});

تحقق من storage/logs/laravel.log بحثًا عن الأخطاء.


المشكلات الشائعة

المشكلةالحل
"Connection timed out"المنفذ 587/465 محجوب من الاستضافة. جرّب المنفذ 2525 أو تواصل مع المضيف.
"Authentication failed"اسم المستخدم/كلمة المرور خاطئة. بالنسبة لـ Gmail، استخدم App Password.
"Certificate verify failed"إصدار PHP قديم. جرّب 'verify_peer' => false في خيارات الـ mailer في config/mail.php.
البريد الإلكتروني يصل للبريد المزعجأضف سجلات DNS لـ SPF وDKIM وDMARC.
تأخر في إرسال البريد الإلكترونيهل تستخدم QUEUE_CONNECTION=database؟ تأكد من تشغيل عامل قائمة الانتظار.
لا خطأ ولكن لا بريد إلكترونيهل تستخدم MAIL_MAILER=log؟ البريد الإلكتروني يُسجَّل وليس يُرسَل. تحقق من storage/logs/laravel.log.

استخدام MAIL_MAILER=log للتشخيص

اضبط MAIL_MAILER=log في .env لتسجيل جميع رسائل البريد الإلكتروني في ملف السجل بدلاً من إرسالها. مفيد للتحقق من محتوى البريد الإلكتروني دون التأثير على المستلمين الفعليين.


الخطوات التالية