我用这段代码发送邮件:
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mailMessage);
如果我每秒钟触发这个代码十次,那么在几百封邮件之后,发送一封邮件需要10秒.这里会有排队吗?
发布于 2010-04-18 05:13:03
使用SmtpClient.SendAsync而不是SmtpClient.Send。
发布于 2010-04-18 05:37:44
可能有几个问题:
您是否正确地处理了MailMessage对象?如果您看一下,该对象实现了IDisposable,因此应该被释放。(我想是因为潜在的附属物。)我会从这里开始。
你和服务器管理员谈过了吗。可能会有某种节流机制,可以检测到你快速地发送了这么多邮件。
如果您想异步发送电子邮件,并关心尝试发送的结果,那么一定要注册SendCompleted事件。您还需要存储消息本身或某种表示,以了解在SendCompleted事件中完成了哪条消息。记住,事情开始的顺序可能不是他们完成的顺序。
发布于 2010-04-18 06:36:38
会不会是邮件服务器切断了您的请求?我使用本地IIS smtp服务器发送邮件,即使在几分钟内发送了数千条邮件(异常处理程序出错:P ),“发送”邮件也很少花时间,但是IIS可以很慢地处理这些邮件,有时在IIS邮件队列中清除它们也需要几个小时。
https://stackoverflow.com/questions/2662202
复制