التحقق تلقائيًا من رسائل البريد الإلكتروني المرتدة عبر بروتوكول POP3؟

StackOverflow https://stackoverflow.com/questions/7231

  •  08-06-2019
  •  | 
  •  

سؤال

هل يمكن لأي شخص أن يوصي ببرنامج أو مكتبة .NET التي ستتحقق من رسائل البريد الإلكتروني المرتدة وسبب الارتداد؟أتلقى رسائل بريد إلكتروني مرتدة في حساب pop3 الذي يمكنني قراءته بعد ذلك.

أحتاجه للحفاظ على قاعدة بيانات المستخدم الخاصة بي نظيفة من عناوين البريد الإلكتروني غير الصالحة وأريد أتمتة هذا (وضع علامة على المستخدم كبريد إلكتروني غير صالح).

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

المحلول

لقد قمت بقدر كبير من العمل في التعامل مع رسائل البريد الإلكتروني المرتدة وهناك أنواع مختلفة.إذا كنت تريد التأكد تمامًا من أن البريد الإلكتروني الذي تنظر إليه هو بالفعل ارتداد من نوع معين، فإنني أوصي بشدة بالحصول على مرشح جيد.لقد عملت مع أدوات الرقصة وقد عملت بشكل جيد للغاية.فهو يتيح لك معرفة نوع الارتداد، هل هو قوي أم ناعم أم عابر أو إذا كان هناك شخص يحاول إلغاء الاشتراك.يحتوي على واجهات برمجة تطبيقات متعددة بما في ذلك .Net ووجدت أنه من السهل جدًا البدء في العمل.

نصائح أخرى

مثل يقول أبفو, ، بروتوكول POP3 بسيط للغاية، والحصول على الرسائل أمر لا يحتاج إلى تفكير.يعد تحليل الرسائل للحصول على حالات الفشل أمرًا صعبًا، كما أن التحليل الموثوق للبريد الإلكتروني الذي تسبب في الفشل وسبب فشله هو أمر صعب حقًا.المشكلة هي أن الرسائل المرتدة ليس لها تنسيق قياسي، فالنماذج الافتراضية تختلف من MTA إلى MTA.بعد ذلك، يمكن لمسؤول الموقع تعديل سبب الفشل مما يجعل التعرف عليه أكثر صعوبة، ويمكن لمسؤول الموقع تعديل قالب رسالة الفشل مما يجعل الأمر شبه مستحيل.

تحقق مما إذا كان بإمكانك العثور على مدير قائمة بريدية بتنسيق .NET وما إذا كان بإمكانك إعادة استخدام رمز معالجة الارتداد.إذا فشل ذلك، فانظر ما إذا كان بإمكانك تغيير الأداة التي ترسل الرسائل لإرسال كل بريد إلكتروني من مرسل مغلف فريد (وقابل للعكس) (VERP أعتقد أنه يسمى؟).وبهذه الطريقة لن تحتاج إلى فحص نص رسالة البريد الإلكتروني، ويمكنك معرفة المستلم الذي فشل من خلال فحص عنوان المستلم لرسالة الفشل.

من السهل جدًا القيام بذلك باستخدام TcpClient.افتح الخادم:

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(POP3Server, POP3Port);
NetworkStream stream = tcpClient.GetStream();

اقرأ رسالة الترحيب:

int read = stream.Read(inBuffer, 0, inBuffer.Length);
string response = Encoding.ASCII.GetString(inBuffer, 0, read);
if (response.IndexOf("+OK") != 0) throw new ...;

اكتب مرة أخرى إلى الخادم:

byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n");
stream.Write(outBuffer, 0, outBuffer.Length);

الذي يرسل أمر المستخدم.تحتاج إلى تسجيل الدخول ومن ثم يمكنك البدء في الحصول على الرسائل - راجع ملف POP3 RFC للحصول على القائمة الكاملة للأوامر.إذا كنت لا تتطلع إلى إنشاء ملف خاص بك، فراجع هذا مقالة مشروع الكود.

شكرا على الجواب، عظيم!لقد قمت ببعض الأبحاث بنفسي ووجدت ListNanny - كما أنه سهل الاستخدام للغاية ويخبرك بنوع الارتداد.سأكتب بعض الأدلة على المفهوم وأرى أيهما أفضل ...

لقد جعلني سؤالك أدرك أن المكون الإضافي Wordpress Newsletter الذي كنت سأستخدمه، لم يكن به إدارة للارتداد، وسأحتاج إلى شيء ما أيضًا.

نظرت حولي لبعض الوقت، واستقريت على المصدر المجاني والمفتوح مدير النشرة الإخبارية PHPlist.

يصفون بالتفصيل إعداداتهم للتعامل مع الارتدادات ولديهم تجربة ميزة التعامل مع الارتداد المتقدمة سيسمح لك ذلك بتخصيص معالجة الارتداد بالطريقة التي تريدها تمامًا.

إذا قررت عدم استخدام PHPlist، فإن قراءة كيفية القيام بذلك ستكون معلومات مفيدة لك.

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