كيفية جعل بوت البريد الإلكتروني التي ترد على المستخدمين عدم الرد على صناعة السيارات في الردود والحصول على نفسها في حلقات البريد

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

سؤال

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

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

ملاحظة: تذكر أن يكون بوت الخاصة بك أن تعلن أنها والرد الآلي! تشمل

Auto-Submitted: auto-reply

وفي رأس البريد الإلكتروني بوت الخاص بك.

قانون بلدي الأصلي لتجنب حلقات البريد التالي. الرد إلا إذا realmail يعود صحيحا.

sub realmail {
  my($email) = @_;
  $email =~ /\nSubject\:\s*([^\n]*)\n/s;
  my $subject = $1;
  $email  =~ /\nPrecedence\:\s*([^\n]*)\n/s;
  my $precedence = $1;
  $email  =~ /\nAuto-Submitted\:\s*([^\n]*)\n/s;
  my $autosub = $1;

  return !($precedence =~ /bulk|list|junk/i ||
           $autosub =~ /(auto\-replied|auto\-generated)/i ||
           $subject =~ /^undelivered mail returned to sender$/i
          );
}

و(الشيك موضوع غير ضروري بالتأكيد؛ أنا فقط واضاف هذه الشيكات واحد في وقت واحد كما نشأت المشاكل ويبدو مما سبق الآن للعمل لذلك أنا لا أريد أن أتطرق إليها ما لم يكن هناك شيء أفضل نهائيا)

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

المحلول

وRFC 3834 يوفر بعض التوجيهات على ما يجب عليك القيام به، ولكن هنا بعض الإرشادات ملموسة:

وتعيين مرسل المغلف الخاص بك إلى عنوان بريد إلكتروني مختلف من السيارات الخاصة بك في الرد وذلك مستبعد لا إطعام مرة أخرى إلى النظام.

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

تأكد من إضافة أي التقليب من رأس أن الآخرين متطابقة إلى وقف الحلقات. وفيما يلي قائمة I الاستخدام:


X-Loop: autoresponder
Auto-Submitted: auto-replied
Precedence: bulk (autoreply)

وفيما يلي بعض من التعابير المنطقية رأس يمكنني استخدامها لتجنب الحلقات وفي محاولة للعب لطيفة:


 /^precedence:\s+(?:bulk|list|junk)/i
 /^X-(?:Loop|Mailing-List|BeenThere|Mailman)/i
 /^List-/i
 /^Auto-Submitted:/i
 /^Resent-/i

وأنا أيضا تجنب الاستجابة إذا كان أي من هذه هي المرسلين ظرف:


if ($sender eq ""
    || $sender =~ /^(?:request|owner|admin|bounce|bounces)-|-(?:request|owner|admin|bounce|bounces)\@|^(?:mailer-daemon|postmaster|daemon|majordomo|ma
ilman|bounce)\@|(?:listserv|listsrv)/i) {

نصائح أخرى

وهذا <م> حقا يبدو وكأنه شيء وهذا متاح وربما كان ذلك وحدة من CPAN ، ولكن لم أجد أي شيء ذي صلة بشكل واضح في خمس دقائق من البحث. البريد :: لايت :: :: MBOX المعالج يبدو أنه قد تفعل ما تريد:

<اقتباس فقرة>   

والبريد :: لايت :: :: رسالة المنظر هو   إطار للبريد الآلي   معالجة. على سبيل المثال لديك   خادم البريد وكان لديك حاجة ل   معالجة بعض أنواع البريد الوارد   الرسائل تلقائيا. فمثلا،   يمكنك استخراج الآلي   الإخطارات، والفواتير، الخ التنبيهات   من تدفق البريد الخاص بك وأداء بعض   المهام على أساس مضمون تلك   رسائل.

ولكن مستندات منه هي متفرق يكفي أنه ليس من الواضح على الفور ما اذا توفر تلك المثال الوظائف نفسها أو إذا كان لديك لتوفير رمز لاخراجهم.

في أي حال، رغم ذلك، إذا لم تكن قد اطلعت بالفعل CPAN، حيث ان وأود أن تبدأ إذا أردت أن تفعل شيئا من هذا القبيل.

وجوابي هنا يتعامل فقط مع مستبعد وهو أكثر وضوحا.

DSN (تسليم الإخطار الحالة) معرف سوف تساعدك على الكشف عن DSN / ارتدت رسالة . وينبغي أن يذهب إلى مسار الرجوع وعدم الرد إلى.

وهنا عينة من رسالة DSN . تتضمن المعلومات رأس معرف الرسالة، نوع المحتوى ديه قيم معينة (تسليم الوضع) وما إلى ذلك.

وغير قادر على توفير لكم أي رموز في بيرل، فقط لي 2 سنت للفكرة.

وPS: هل لاحظ أن ليس كل خوادم البريد الإلكتروني أو MTA يتفق مع هذا، لكنني تخمين لا أكثر.

ويجب أن يكون هناك وسيلة معيارية للتعامل مع هذا، ولكن المشكلة هي أن عليك أن تفترض أن الأنظمة التي تقوم بإرسال ردود تلقائية تمتثل لهذا المعيار، عندما كان معظم الوقت، وانهم فقط لا تفعل.

وكيف يمكن الحصول على العنوان الذي قمت بالرد؟ وآمل أن لا تستخدم رأس From:. تحقق رأس Reply-to: أولا وإذا كان هذا غير موجود، استخدم Return-path:.

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

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