使用SmtpClient(C#)发送大量邮件需要很长时间

我正在使用这段代码来发送邮件:

SmtpClient client = new SmtpClient(); client.Host = smtpServer; client.Send(mailMessage); 

如果我触发这个代码10次/秒,那么在发送了100封邮件之后,发送邮件需要10秒钟……这里可能有一个队列吗?

看起来像邮件服务器强制延迟,可能是为了避免垃圾邮件: http : //en.wikipedia.org/wiki/Tarpit_(networking) 。

你使用什么邮件服务器? 它是如何configuration的? 您是否使用经过身份validation或未经身份validation的SMTP来发送邮件?

正如Massimo所说,许多智能SMTP服务器都具有节streamfunction。 它也可以限制在使用networking限制的SMTP服务器的外部。

如果你的代码被阻塞,你应该asynchronous发送。 您可以使用不是我最喜欢的SmtpClient上的.SendAsync()方法,或者使用类似SmartThreadPool的方法为每条消息创build一个线程。

如果您是asynchronous发送这些消息,则不能将消息封装在using()语句中,因此您需要在MailMessage上调用.Dispose(),否则会出现资源问题。