نموذج ووردبريس يقول تم الارسال ولا تصل الرسالة: تجربة SMTP فعلية
ضغطت ارسال، وظهر الشريط الاخضر، لكن الرسالة ما وصلت على البريد. هاي من اكثر مشاكل نماذج ووردبريس ازعاجا، لان كلمة تم الارسال بتعطيك شعور ان كل اشي انتهى. بالحقيقة هي غالبا بتعني ان الموقع سلم الرسالة للطبقة التالية فقط، وما بتثبت انها وصلت صندوق الوارد.
عشان نثبت الفرق عملنا نموذج تواصل حقيقي على نسخة ووردبريس التجريبية. النموذج استدعى wp_mail()، وربطناه بخادم SMTP محلي نتحكم فيه. في الجولة الاولى قبل الخادم الرسالة ورد برمز 250 لكنه اسقطها عمدا من غير ما يحفظها. في الجولة الثانية حفظ نفس الخادم الرسالة كملف EML كامل. هيك قدرنا نقيس ثلاث نقاط منفصلة: رد ووردبريس، قبول SMTP، ووجود رسالة فعلية في الصندوق.
نفس الشكوى موجودة في نقاش دعم ووردبريس عن نجاح النموذج من غير وصول البريد، وظهرت كمان في نقاش ريديت عن النموذج وSMTP. اما المرجع الرسمي لدالة wp_mail فيوضح ان رجوع القيمة true لا يعني تلقائيا ان المستخدم استلم الرسالة.
نتيجة التجربة باختصار
- النموذج عرض رسالة نجاح في الجولتين.
wp_mail()رجعتtrueفي الجولتين.- خادم SMTP قبل رسالة واحدة ورد 250 في كل جولة.
- الجولة الاولى: صفر رسالة في صندوق المختبر.
- الجولة الثانية: رسالة واحدة محفوظة مع From وTo وSubject وMessage-ID والمحتوى.
الجولة الاولى: تم الارسال لكن الصندوق فاضي
ملينا الاسم والبريد والرسالة وضغطنا الزر. النموذج ما كان صورة تمثيلية؛ هو صفحة فعلية نفذت طلب POST واستدعت نظام البريد داخل ووردبريس. ظهر اشعار: تم استلام النموذج وتسليمه لخادم البريد.

خادم المختبر كان بوضع الاسقاط. نفذ محادثة SMTP كاملة، قبل المرسل والمستلم وبيانات الرسالة، ثم رد 250 accepted. هذا كافي حتى تعتبر PHPMailer ووردبريس العملية ناجحة. بعدها الخادم ما حفظ الرسالة، وهي محاكاة مضبوطة لمرحلة لاحقة ممكن ترفض او تسقط الرسالة.

هاي النتيجة ما بتقول ان كل مزود بريد بيعمل نفس الاشي. هي بتثبت نقطة التشخيص: اشعار النموذج ما بفحص صندوق Gmail او Outlook، وما بيعرف اذا الرسالة دخلت spam او ارتدت لاحقا او انرفضت بعد التسليم لخادم وسيط.
الجولة الثانية: نفس النموذج مع دليل تسليم
صفرنا سجل الارسال وشغلنا خادم SMTP بوضع الالتقاط. ما غيرنا النموذج ولا عنوان المستلم ولا موضوع الرسالة. اعدنا تعبئة الحقول والارسال، وظهر نفس اشعار النجاح.

هالمرة ما اكتفينا بالقيمة true. فحصنا الصندوق نفسه ووجدنا ملف EML واحد حجمه 607 بايت، وفيه عنوان المستلم qa@semsemm.test والمرسل forms@semsemm.test والموضوع ومعرف Message-ID والمحتوى الذي كتبناه.

فيديو توثيق التجربة الفعلية
هذا تسجيل شاشة صامت ومتواصل للاختبار وهو يحدث داخل بيئة محلية معزولة. تظهر الخطوات والنتائج الفعلية لحظة التنفيذ، من غير تركيب صور ثابتة.
وين ممكن تضيع الرسالة؟
- داخل النموذج: عنوان To غلط، الاشعارات مطفية، او شرط النموذج ما تحقق.
- داخل ووردبريس:
wp_mail()رجعت false بسبب اعداد او خطا PHPMailer. - بين الموقع وخادم SMTP: منفذ محظور، DNS غلط، TLS فشل، او بيانات الدخول مرفوضة.
- بعد قبول SMTP: الخادم ارتد من مزود المستلم او حجز الرسالة في طابور.
- عند المستلم: الرسالة دخلت spam او quarantine او رفضتها سياسة SPF وDKIM وDMARC.
- داخل الصندوق: فلتر او تحويل او قاعدة حذفت الرسالة او نقلتها لمجلد ثاني.
تشخيص مرتب من غير تخمين
ابدأ من النموذج واعمل طلب بعلامة واضحة في الموضوع، مثلا رقم وتوقيت. سجل الوقت بالدقيقة وعنوان المستلم. بعدها امش حسب الدليل:
- افحص سجل طلب النموذج وتأكد انه وصل للخادم مرة واحدة.
- سجل قيمة
wp_mail()وخطأwp_mail_failedاذا ظهر. - افتح سجل مزود SMTP وابحث بنفس الوقت وعنوان المستلم او Message-ID.
- اذا المزود قبل الرسالة، افحص حالة delivered او bounced او deferred، مش كلمة sent بس.
- افتح spam وquarantine وقواعد الصندوق.
- افحص رؤوس رسالة وصلت لمزود آخر وقارن نتائج SPF وDKIM وDMARC.
- جرب عنوانين عند مزودين مختلفين. وصول Gmail وفشل Outlook مثلا بحصر المشكلة بسياسة المستلم.
اذا wp_mail رجعت false
هون المشكلة قبل التسليم. اربط حدث wp_mail_failed بسجل مؤقت، وابحث عن رسالة الخطا. ممكن تلاقي Could not connect to SMTP host او Authentication failed او خطا شهادة. لا تعيد المحاولة عشرات المرات، لانك ممكن تعمل طابور او حظر. اصلح السبب وجرب رسالة واحدة بعلامة جديدة.
اذا wp_mail رجعت true وما في رسالة
انتقل لسجل مزود الارسال. true تعني ان الطلب اتعالج من غير خطا مباشر حسب المسار المستخدم، لكنها مش ايصال استلام. اذا ما في سجل عند مزود SMTP اصلا، غالبا موقعك ما بيستخدم الاعداد الذي بتفكره او في إضافة ثانية غيرت المسار. اذا في سجل accepted، خذ Message-ID وحالة التسليم النهائية.
اختيار From وReply-To
خلي From عنوانا ثابتا من نطاق موقعك ومسموحا عند مزود الارسال، مثل forms@your-domain.example. بريد الزائر المتغير حطه في Reply-To، مش From. استخدام Gmail الزائر كمرسل من خادم موقعك ممكن يفشل سياسات المصادقة ويشبه الانتحال.
هل تركيب SMTP وحده بكفي؟
SMTP بيعطيك مسارا اوضح وسجلا افضل، لكنه مش ضمان لحاله. لازم بيانات صحيحة، اتصال مشفر، مرسل مصرح، وسجلات DNS متوافقة. لازم كمان تتابع الارتدادات. في تجربتنا خادم SMTP قبل الرسالة في الحالتين، ومع ذلك ما صار عندنا دليل وصول الا بعد فحص الصندوق.
فحص آمن على الموقع الحقيقي
- استخدم حساب استقبال تملكه، ولا ترسل لناس ما طلبوا الرسالة.
- ضع رقم اختبار في الموضوع حتى تميزه بالسجلات.
- ارسل رسالة واحدة لكل مزود بدل تكرار عشوائي.
- لا تنشر كلمة مرور SMTP في لقطة او سجل.
- احذف بيانات الزائر التجريبية بعد الفحص.
- اذا النموذج يحفظ الطلبات، تأكد ان الحفظ يعمل حتى ما تضيع الرسائل وقت عطل البريد.
شو تطلب من شركة الاستضافة؟
ارسل الوقت الدقيق، نطاق المرسل، المستلم، Message-ID ان وجد، ونتيجة الاتصال. اسأل هل خرجت الرسالة من الخادم، وما كان رد خادم المستلم، وهل المنفذ 587 او 465 مسموح. جملة البريد لا يعمل لحالها بتخليهم يعيدوا عليك نفس الاجابات العامة.
حدود تجربتنا
التجربة محلية وما بتقيس سمعة نطاق semsemm.com ولا تسليم Gmail الحقيقي. هي تختبر منطق ووردبريس ومسار SMTP والفرق بين القبول والتسليم بشكل قابل للتكرار. اختبار السمعة وDNS لازم يتم على الدومين والاستضافة وقت الربط، ورح نفصله بدليل مستقل.
تنظيف المختبر
بعد التوثيق حذفنا صفحة النموذج وعطلنا إضافة المختبر وحذفنا ملفها. احتفظنا فقط بلقطات النتائج والفيديو وملف الرسالة التجريبية من غير بيانات شخصية حقيقية.
الخلاصة
في الجولة الاولى قال النموذج تم الارسال، ورجعت wp_mail بالقيمة true، وقبل SMTP الرسالة، لكن الصندوق بقي فاضي. في الجولة الثانية ظهر نفس النجاح، واضفنا دليلا مستقلا: رسالة EML محفوظة مع الرؤوس والمحتوى. لذلك التشخيص الصح يمشي من النموذج إلى سجل ووردبريس ثم SMTP ثم حالة التسليم والصندوق.