مشكلات إرسال البريد الإلكتروني
استكشاف أخطاء تسليم البريد الإلكتروني خطوة بخطوة.
الخطوة 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: الاختبار عبر لوحة الإدارة
- انتقل إلى الإدارة > الإعدادات > البريد الإلكتروني
- انقر إرسال بريد إلكتروني تجريبي
- تحقق من رسالة الخطأ إذا فشل الإرسال
الخطوة 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 لتسجيل جميع رسائل البريد الإلكتروني في ملف السجل بدلاً من إرسالها. مفيد للتحقق من محتوى البريد الإلكتروني دون التأثير على المستلمين الفعليين.