加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:41:41 所属栏目:asp.Net 来源:网络整理
导读:这似乎很简单。我需要从一些ASP.NET应用程序发送电子邮件。我需要做到这一点,没有奇怪的错误,没有CPU利用率通过屋顶。我不是在说大量的电子邮件,只是偶尔的电子邮件。 System.Net.Mail看起来很可怕。 SmtpClient不会发出Quit命令(这可能是因为Microsoft(R
这似乎很简单。我需要从一些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。必须要解决这个问题。

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读