有没有办法关闭邮件smtp会话?

时间:2011-05-09 12:40:02

标签: c# .net smtp

我正在使用Gmail STMP服务器发送电子邮件。它工作得很好。但是从几天开始,它有时会停止工作。现在,它只能工作5 out of 10次。

例外:Failure Sending Email

内部异常:Unable to connect to remote server.

在与托管技术支持人员交谈后,他们表示他们的服务器上存在邮件会话限制。这是Shared Hosting,因此当它超过所有新连接时都会阻塞。他们说他们正试图修复它。但也请说明你是closing the mail session properly or not

我调查了它,但没有Close()Dispose()。我还读到没有确认SMTP转移?

如果有关闭邮件会话,请告诉我?或解决此问题的任何解决方法。

更新

我正在使用System.Net.Mail

  

MailMessage msg = new MailMessage();

     

SmtpClient sc = new SmtpClient(“smtp.gmail.com”,587);

     

NetworkCredential info = new NetworkCredential(“email”,“password”);

然后还有另一种调用sc.Send()的方法。

1 个答案:

答案 0 :(得分:12)

System.Net.Mail.SmtpClient实现IDisposable,所以我建议你使用它而不是你当前使用的任何代码。使用using块来确保它被正确处理。

请特别注意,System.Web.Mail的使用已弃用,以支持System.Net.Mail

using (SmtpClient client = new SmtpClient("mail.google.com")) 
{

}

修改 您现在已经注意到您正在使用System.Net.Mail。在这种情况下,您会发现SMTPClient 具有Dispose方法(因为它实现了IDisposable),它将正常关闭SMTP连接。但是,更好的做法是使用using块,而不是直接调用Dispose。最后,请从链接文档中注意以下内容:

  

SmtpClient类没有Finalize   方法。所以应用程序必须调用   处理明确释放   资源。

     

Dispose方法遍历   所有已建立的联系   主机中指定的SMTP服务器   属性并发送QUIT消息   然后优雅地结束TCP   连接。 Dispose方法也   释放使用的非托管资源   由底层的Socket。