.NET发送电子邮件的最佳方法(System.Net.Mail有问题)

这似乎很简单。我需要从一些ASP.NET应用程序发送电子邮件。我需要做到这一点,没有奇怪的错误,没有cpu利用率通过屋顶。我不是在说大量的电子邮件,只是偶尔的电子邮件

System.Net.Mail看起来很可怕。 SmtpClient不会发出Quit命令(这可能是因为Microsoft(R)对以下规范不感兴趣),因此连接将保持打开状态。因此,如果有人尝试在该连接终止之前发送电子邮件,则可以从SMTP服务器收到有关打开的连接数太多的错误信息。这是Microsoft(R)完全不感兴趣的错误。看这里:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=146711

另外,如果你环顾一些建议使用这个代码解决这个问题:

smtpClient.ServicePoint.MaxIdleTime = 1;
smtpClient.ServicePoint.ConnectionLimit = 1;

好的,是的,“解决”连接被打开的问题。但是,如果您愿意,可以在服务器上尝试这样做,导致进程(在这种情况下为w3wp.exe)正在运行的cpu跳转并保持100%,直到应用程序池被回收为止。无论什么原因,运行mscorwks.dll!的线程是CreateApplicationContext的罪魁祸首。

这具有非常好的副作用,如果您运行在持续100%cpu使用率的Web主机上,您将使您的应用程序池被禁用。所以这不像一些建议那么微不足道。

所以我的问题是怎么办?我需要做的是如此简单;然而,让这些“连接打开太多”的错误是不可接受的,100%的cpu使用率也是不可接受的。我不想购买第三方组件,而不是因为我很便宜,但是我购买了足够的组件和MSDN订阅,似乎很疯狂,为了简单的SMTP功能,需要支出$ 100- $ 300。

我看到设置MaxIdleTime更高可以帮助,但我怀疑。我不想让我的应用程序池被禁用,因为Microsoft不想遵循SMTP规范。

编辑:我查看了quiksoft.com组件,但它不支持SMTP身份验证,费用为$ 500。必须要解决这个问题。

@R_502_323@

我遇到与所描述的设置相同的cpu利用率问题。我最终用微软打开一张机票来确定问题的原因。 cpu利用率问题在于ServicePoint类。在ServicePoint类内部,有一个运行每个(MaxIdleTime / 2)毫秒的计时器。看到问题?通过将MaxIdleTime值更改为2,cpu利用率将下降到正常水平。

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...