延迟接收来自c#发送的电子邮件

时间:2010-02-09 01:08:12

标签: c# .net email smtp delay

这是我的代码

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封电子邮件,现在我的问题是某些收件人立即收到电子邮件,但有些收件人在几分钟后收到,其中一些收件人甚至在几小时后收到,其中许多人在到达之前就迷路了目的地。我的This Issue仍未得到答复。 我真的需要帮助。我卡住了。感谢

3 个答案:

答案 0 :(得分:2)

请尝试以下操作:您的MailMessage需要位于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。我们知道它是一个对象。大多数事情都是。对象没有什么特别的了。

答案 1 :(得分:0)

实际上这是有道理的。您是否认为通过在很短的时间内发送60K电子邮件,您可能会被视为垃圾邮件发送者?延迟像StrongMail这样的电子邮件确实是阻止ISP被禁止的好方法。

答案 2 :(得分:0)

问题不在于您的代码,而在于您的SMTP服务器。

可能是任何数量的问题,例如无法在DNS服务器中找到MX记录(特别是如果您的DNS服务器很弱,并且无法快速处理查找)。

我会检查你的邮件服务器日志,作为发生了什么的一些迹象。