كم مرة استمروا في التكرار للعالم ... هناك نقاش طويل وربما لا نهاية له حول العادي الذي هو الصحيح وأنه من الضروري التحقق من حقل البريد الإلكتروني للمستخدم.
نعم ، تحتاج حقًا إلى التحقق من الموسم العادي. لكن منتجاتنا عبر الإنترنت. فلماذا لا تستخدم قوتها الحقيقية؟
بالإضافة إلى ذلك ، غالبًا ما تكون هناك مواقف يكون فيها المستخدمون مخطئون حقًا عند إدخال عنوان بريد إلكتروني (بما في ذلك في مجال). حسنًا ، أو في حقل البريد الإلكتروني ، أدخل أي "Habrakadabra" ممكن ، والذي ينتقل بسهولة من خلال regexp ، ولكن لا يمكن أن يكون البريد ، لأنه حتى هذا المجال غير موجود في الطبيعة :)
بالمناسبة ، بناءً على هذا الفارق الدقيق ، قمنا حرفيًا للتو: خلاصة القول هي أنه لسبب ما ، على الموقع الذي يتم رفعه على CMS-ke شائع ، تم إيقاف تشغيل إعلامات البريد الإلكتروني.
السبب ، كما اتضح ، هو عنوان مرسلي البريد العشوائي.
كانت هناك عدة أسباب:
- تعد CMS شائعة جدًا ، وبالتالي ، هناك الكثير من مرسلي البريد العشوائي المسجلين. والأكثر إثارة للاهتمام - في الإعدادات التي يمكنك (والعديد منها ، بالمناسبة) - تعطيل التحقق من البريد الإلكتروني. في هذه الحالة ، يمكنك (وكذلك تفعل معظم برامج الروبوت) هنا لإدخال أي قمامة
- لم تتم إعادة كتابة نصوص الرسائل من النصوص العادية.
المجموع: صعد مرسلو البريد العشوائي على نطاق واسع للتسجيل ، وألقوا رسائل البريد الإلكتروني اليسرى إلى البرنامج النصي ، حيث حاولنا إرسال رسائل. رأى عامل تصفية البريد العشوائي أن هناك عددًا من رسائل البريد الإلكتروني الواردة من البريد الإلكتروني الخاص بنا ، مع النصوص التي شاهدها بالفعل عدة مرات من عناوين البريد الإلكتروني الأخرى ، وفي الوقت نفسه ، وقع عدد كبير منها على عناوين البريد الإلكتروني غير الموجودة.
بشكل عام ، يقع العنوان البريدي بشكل دوري ضمن البريد العشوائي.
لذلك ، يمكن ، بل ويجب القول ، على التوالي ، أن التحقق من توفر مجال على الإنترنت ، وكذلك وجود خدمة بريد (سجلات MX للمجال) عليها ، هو ، من الناحية النظرية ، يجب أن يكون موجودًا ويعمل في أنظمة تسجيل المستخدم.
في الواقع ، فإن جوهر الشيك بسيط للغاية: أثناء التسجيل ، في مرحلة التحقق من صحة بيانات المستخدم ، نقوم بفصل المجال عن البريد الإلكتروني ، ونرى ما هو موجود على MXs.
هل هو صعب؟ ليس حقا ولكن يمكن أن يقلل بشكل كبير من الحمل على الخدمات البريدية. وبالمناسبة ، من غير المرجح بدرجة كبيرة الدخول في قوائم البريد العشوائي (بعد كل شيء ، فإن إرسال عدد كبير من الرسائل إلى عناوين البريد غير الموجودة يعد أحد علامات البريد العشوائي).
في PHP ، بشكل غريب بما فيه الكفاية ، هذا بسيط جدًا:
$email ="11@sdlkfjsdl.co.uk"; $domain = substr(strrchr($email, "@"), 1); $res = getmxrr($domain, $mx_records, $mx_weight); if (false == $res || 0 == count($mx_records) || (1 == count($mx_records) && ($mx_records[0] == null || $mx_records[0] == "0.0.0.0" ) ) ){
سأشرح "الوحشي" إلى حد ما. الحقيقة هي أنه في وثائق وظيفة
getmxrr كانت
هناك تعليقات مع إشارات إلى سلوكها الذي لم يكن صحيحًا تمامًا. وعلى الرغم من أنني لم أتمكن من العثور عليها على php7.1 - التحقق الإضافي ليس إضافيًا :)
على روبي ، يتم ذلك بطريقة مماثلة:
domain = invite.email.split('@').last.mb_chars.downcase.to_s.force_encoding("UTF-8")
في الوقت نفسه ، سأوضح أن هذا التحقق من حقل البريد الإلكتروني لا يمكن أن يؤثر بشكل خطير على جودة المعلومات في قاعدة بيانات مشروعك (ويقلل من خطر إرسال مرسلي البريد العشوائي) ، ولكن يؤدي أيضًا إلى انخفاض في أعباء العمل. بعد كل شيء ، إرسال رسائل من البرنامج النصي هو عملية بطيئة إلى حد ما في الممارسة العملية.