【发布时间】:2012-12-03 18:17:13
【问题描述】:
在带有 .NET 3.5 的 Windows 控制台应用程序中(我将现有的 .NET 2.0 应用程序更改为 .NET 3.5)
我有一个奇怪的问题,发送电子邮件的代码工作几次(可能是 5 到 10 次)。
几次后,发送邮件失败,提示“发送邮件失败”。重新启动系统后,相同的代码可以工作。 (这不是生产中的预期解决方案)。
这是一段代码,我觉得,在某个地方我已经关闭了这个 SmtpClient 连接。所以我将客户端设置为 null 并调用了 GC.Collect,但没有帮助我。
请帮忙
private static void SendEmail(MailMessage msg)
{
SmtpClient client = new SmtpClient(GetSMTPServer(), GetSMTPPort());
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.EnableSsl = false;
client.ServicePoint.MaxIdleTime = 1;
//client.Timeout = GetSMTPTimeout(); 30000000
client.Send(msg);
client = null;
GC.Collect();
}
【问题讨论】:
-
异常详情不够,抓拍异常详情。
-
- smEx {“发送邮件失败。”} System.Net.Mail.SmtpException - InnerException {“无法从传输连接读取数据:net_io_connectionclosed。”} System.Exception {System.IO. IOException}
-
我看过这个帖子,除了升级到 4.0 和安装服务包之外没有答案。不能推荐:(
-
释放连接使用的资源的正确方法是使用client.Finalize(true),而不是使用client = null
标签: .net smtpclient