我正在使用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()
的方法。
答案 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。