Asp.net system.net.mail.smptclient是否与服务器断开连接?

Asp.net system.net.mail.smptclient是否与服务器断开连接?,asp.net,email,.net-2.0,Asp.net,Email,.net 2.0,我们的web系统中有一些页面使用.net system.net.mail控件发送电子邮件。这件事一直运行得很好,只是现在看起来smptclient类实际上可能没有与服务器断开连接,因此SMTP服务器保持该连接的打开状态,结果我们在SMTP服务器上一次允许打开的连接数达到最大,尽管一次只发送一封电子邮件 (为了记录在案,这是一个用VB编写的.net 2.0 asp.net应用程序,我们非常确信这不是某种安全/病毒/垃圾邮件传递情况。) 谷歌和MSDN并没有发现任何确凿的证据,但博客中的异端邪说足以

我们的web系统中有一些页面使用.net system.net.mail控件发送电子邮件。这件事一直运行得很好,只是现在看起来smptclient类实际上可能没有与服务器断开连接,因此SMTP服务器保持该连接的打开状态,结果我们在SMTP服务器上一次允许打开的连接数达到最大,尽管一次只发送一封电子邮件

(为了记录在案,这是一个用VB编写的.net 2.0 asp.net应用程序,我们非常确信这不是某种安全/病毒/垃圾邮件传递情况。)

谷歌和MSDN并没有发现任何确凿的证据,但博客中的异端邪说足以证实我们可能并没有产生幻觉

还有其他人有过这个问题吗?(并设法修复它?)


当然,如果它确实工作正常,而且我们正在产生幻觉,那么知道它也很好

邮件发送后,您是否正确处理了邮件?我从来没有看到任何迹象表明SmtpClient没有关闭它的连接,尽管

一旦你的邮件被发送,你是否正确地处理了它?我从来没有看到任何迹象表明SmtpClient没有关闭它的连接,但是你检查了StmpClient类的stmpDeliveryMethod属性了吗?

你检查了StmpClient类的stmpDeliveryMethod属性了吗?

这类“我连接了吗”问题是TcpView来自sysinternals(现在的Microsoft)的(\\live.sysintranses.com\Tools\Tcpview.exe)

对于这种类型的“我是否连接了””问题是来自sysinternals(现在的Microsoft)的(\\live.sysintranses.com\Tools\Tcpview.exe)

确保在邮件服务器上设置了这些选项(假设使用windows)-

[HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] “TcpTimedWaitDelay”=dword:0000001e “MaxFreeTcbs”=dword:000007d0
“MaxUserPort”=dword:0000fffe

确保在邮件服务器上设置了这些选项(假设为windows)——

[HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] “TcpTimedWaitDelay”=dword:0000001e “MaxFreeTcbs”=dword:000007d0
“MaxUserPort”=dword:0000fffe

无法立即使用SmtpClient发送电子邮件的问题是,在某些情况下,它不会在应该发送SMTP命令“退出”时发送SMTP命令(即,它没有正确断开连接)。我过去曾使用以下代码成功地强制断开连接:

var smtp = new SmtpClient();
smtp.ServicePoint.MaxIdleTime = 1;
smtp.ServicePoint.ConnectionLimit = 1;
smtp.Send(message);

这将强制smtpclient对象尽早断开连接。此外,请确保smtpclient实例很快脱离范围(即,不要在某个位置存储对它的静态引用).

SmtpClient无法立即发送电子邮件的问题是,在某些情况下,它不会在应该发送SMTP命令时发送“退出”(即,它没有正确断开连接)。我过去曾使用以下代码成功地强制断开连接:

var smtp = new SmtpClient();
smtp.ServicePoint.MaxIdleTime = 1;
smtp.ServicePoint.ConnectionLimit = 1;
smtp.Send(message);

这将强制smtpclient对象尽早断开连接。此外,请确保smtpclient实例很快脱离范围(即,不要在某个位置存储对它的静态引用).

是的,我们正在处理MailMessage对象。不过,谢谢。是的,我们正在处理MailMessage对象。不过,谢谢。哦,哇。知道这一点很有用。我想我只是放弃了,决定将其设置为IIS接收目录。我建议不要使用此方法。如果使用,请检查服务器的CPU使用情况,看看是否达到100%的CPU占用率。哦,哇。知道这一点很有用。我想我只是放弃了,决定将其设置为IIS拾取目录。我建议不要使用此方法。如果使用,请检查服务器的CPU占用率,看看是否达到100%的CPU占用率。