تأخير في تلقي البريد الإلكتروني المرسلة من C #

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

  •  19-09-2019
  •  | 
  •  

سؤال

هنا هو رمز بلدي

for(int i = 0; i < number ; i++)
{
  MailAddress to = new MailAddress(iMail.to);
  MailAddress from = new MailAddress(iMail.from, iMail.displayName);
  string body = iMail.body;
  string subject = iMail.sub;
  oMail = new MailMessage(from, to);
  oMail.Subject = subject;
  oMail.Body = body;
  oMail.IsBodyHtml = true;
  oMail.Priority = MailPriority.Normal;
  oMail.Sender = from;
  s = new SmtpClient(smtpServer);
  s.ServicePoint.ConnectionLeaseTimeout = 0;
  if (s != null)
  {
     s.Send(oMail);
  }
  oMail.Dispose();
  s = null;
}

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

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

المحلول

في الواقع هذا منطقي. ألا تعتقد أنه عن طريق إرسال رسائل البريد الإلكتروني 60K في إطار زمني قصير جدا، من المحتمل أن تعتبر المرساة المرجلا؟ تأخير رسائل البريد الإلكتروني مثل الأقرب هو وسيلة جيدة لمنعك من حظرها من قبل ISPS.

نصائح أخرى

جرب ما يلي: يجب أن يكون البريد الخاص بك في using منع. أيضا، لا تحتاج إلى جديد SmtpClient لكل رسالة. أنت بالتأكيد لا تحتاج إلى تعيينها إلى NULL! هذا ليس vb6.

SmtpClient smtpClient = new SmtpClient(smtpServer);
smtpClient.ServicePoint.ConnectionLeaseTimeout = 0;
for (int i = 0; i < number; i++)
{
    MailAddress to = new MailAddress(iMail.to);
    MailAddress from = new MailAddress(iMail.from, iMail.displayName);
    string body = iMail.body;
    string subject = iMail.sub;
    using (MailMessage mailMessage = new MailMessage(from, to))
    {
        mailMessage.Subject = subject;
        mailMessage.Body = body;
        mailMessage.IsBodyHtml = true;
        mailMessage.Priority = MailPriority.Normal;
        mailMessage.Sender = from;
        smtpClient.Send(mailMessage);
    }
}

اقتراح: لا اسم المتغيرات أشياء مثل oMail. وبعد نحن أعرف إنه كائن. معظم الأشياء هي. لا يوجد شيء خاص حول الكائنات بعد الآن.

المشكلة غير المحتملة مع التعليمات البرمجية الخاصة بك، ولكن مع خادم SMTP الخاص بك.

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

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

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