задержка в получении электронной почты, отправленной с С#

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 электронных писем, используя этот код, теперь моя проблема: некоторые получатели получают электронные письма сразу, но некоторые из них получают письмо через несколько минут, а некоторые даже через несколько часов, и многие из них могут потеряться, не дойдя до места назначения.и мой Эта проблема до сих пор остается без ответа.мне действительно нужна помощь в этом.Я застрял.Спасибо

Это было полезно?

Решение

На самом деле это имеет смысл.Не думаете ли вы, что, отправив 60 тысяч писем за очень короткий промежуток времени, вас, скорее всего, посчитают спамером?Задержка электронных писем, как это делает StrongMail, — это хороший способ предотвратить блокировку вас со стороны интернет-провайдеров.

Другие советы

Попробуйте следующее:ваше MailMessage должно находиться в using блокировать.Кроме того, вам не нужен новый SmtpClient за каждое сообщение.Вам, конечно, не нужно устанавливать его в ноль!Это не 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