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

Cha*_*ngh 7 .net c# 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().

RB.*_*RB. 13

System.Net.Mail.SmtpClient实现IDisposable,所以我建议你使用,而不用任何代码,您正在使用.使用使用块以确保它被正确处理.

请特别注意,System.Web.Mail不赞成使用System.Net.Mail.

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

}
Run Code Online (Sandbox Code Playgroud)

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

SmtpClient类没有Finalize方法.因此,应用程序必须调用Dispose以显式释放资源.

Dispose方法遍历所有已建立的与Host属性中指定的SMTP服务器的连接,并发送QUIT消息,然后正常结束TCP连接.Dispose方法还释放底层Socket使用的非托管资源.

  • 直到4.0版才添加IDisposeable (2认同)