سؤال

ما هي الطريقة الأنسب لإرسال بريد إلكتروني لا يقل عن 1000 أو أكثر في PHP؟هل هناك أي تقنية موثوقة لانتظار البريد الإلكتروني قادرة على التعامل مع ذلك؟­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

هل كانت مفيدة؟

المحلول

يمكنك فقط إدراج رسائل البريد الإلكتروني الخاصة بك في جدول قاعدة بيانات قائمة انتظار البريد، وإجراء عملية منفصلة للتحقق من قائمة الانتظار وإرسال دفعة معينة من رقم معين مرة واحدة.

نصائح أخرى

هناك حل مجرب لذلك:كُمَّثرَى Mail_Queue

يعمل بشكل جيد بالنسبة لي.

كما اقترح Mercutio، سأقوم بإدراج سجل جديد في جدول انتظار البريد لكل بريد إلكتروني في انتظار إرساله ثم استخدم عملية منفصلة (مثل CRON) للتحقق من الجدول بشكل دوري بحثًا عن أي عناصر في قائمة الانتظار.

إذا تم وضع أي رسائل بريد إلكتروني في قائمة الانتظار (ولم يتم تخصيص البريد الإلكتروني لكل مستلم)، فسوف أقوم بتجميع رسائل البريد الإلكتروني حسب المجال وإرسال الكتل معًا لتقليل العدد الإجمالي لرسائل البريد الإلكتروني التي يجب إرسالها، على سبيل المثال.إذا كان لديك 1000 رسالة بريد إلكتروني في قائمة الانتظار و250 منها إلى حسابات Gmail، فسأرسل 250 رسالة في 25 كتلة مكونة من 10 (تذكر لمستلمي نسخة مخفية الوجهة لتجنب رؤية بعضهم البعض).

لإرسال البريد الذي سأستخدمه بالفعل بريد الكمثرى عبر وظيفة mail() الخاصة بـ php

بعد إرسال البريد الإلكتروني إما حذف السجل (السجلات) من قائمة الانتظار أو تغيير علامة الحالة لإظهار أنه تم إرساله وحلقة - أود أيضًا إضافة عداد لتتبع رسائل البريد الإلكتروني التي فشلت في إرسالها وإزالتها بعد x محاولات فاشلة

للتغلب على مشكلات المهلة التي أود إما ، (اعتمادًا على الموقف) - قم بتعيين set_time_limit () إلى X Seconds وتتبع وقت تنفيذ البرنامج النصي (قتل البرنامج النصي بعد (x -1) ثانية) - اتصل بالبرنامج النصي من الأمر سطر لتجنب الموعد - تعيين حد لعدد رسائل البريد الإلكتروني التي يمكن أن يرسل البرنامج النصي في تنفيذ واحد

بالتأكيد، قد يكون جدول قاعدة البيانات فكرة.ولكن ماذا عن إرسال 1000 رسالة بريد إلكتروني بمرفق بحجم 2 ميجابايت؟عليك أن تأخذ ذلك في الاعتبار أيضًا.لقد واجهت المشكلة بنفسي، ولجأت في النهاية إلى كتابة البريد الإلكتروني إلى قاعدة البيانات، والملفات إلى نظام الملفات.ثم قام برنامج البريد الإلكتروني الذي استخدمته بقراءة سجلات قاعدة البيانات، وحاول جلب المرفقات لإرسالها.

هل أنت متأكد من أنك تحتاج إلى القيام بهذا البريد في قائمة الانتظار بنفسك؟

ما عليك سوى تسليم كل البريد إلى وكيل نقل البريد الخاص بالجهاز المحلي (sendmail...) واترك ذلك يتولى عملية الانتظار والإرسال.بعد كل شيء، هذا ما تم تصميمه من أجله.

بعبارة أخرى:لا تقلق بشأن هذا!

لقد اعتمدت بشكل عام على الاختراق.لدي قائمة قاعدة بيانات بعناوين البريد الإلكتروني ثم أستخدم إعادة التوجيه التعريفي إلى الذات مع معلمة "إزاحة" متزايدة تحدد الصف الذي سأقوم به في قاعدة البيانات.تتسبب عمليات إعادة توجيه الخادم في حدوث مشكلات لأن المتصفحات تفترض أن الوقت المستغرق يشير إلى حلقة لا نهائية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top