这里是我的代码

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你很可能会被视为垃圾邮件发送者?延迟像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服务器。

这可能是任何数量的问题,比如没有找到您的DNS服务器的MX记录(特别是如果你的DNS服务器是薄弱,无法处理查询那么快)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top