System.Net.Mail:net_io_connectionclosed
廣告:
“/”應用程序中的服務器錯誤。
無法從傳輸連接中讀取數據: net_io_connectionclosed。
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.IO.IOException: 無法從傳輸連接中讀取數據: net_io_connectionclosed。
源錯誤:
執行當前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關異常原因和發生位置的信息。
堆棧跟蹤:
[IOException: 無法從傳輸連接中讀取數據: net_io_connectionclosed。]
System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine) +1927397
System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) +269
System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) +45
System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) +794
System.Net.Mail.SmtpClient.Send(MailMessage message) +1496
[SmtpException: 發送郵件失敗。]
Mvccom.Email.NetSendMail(String frmAddress, String fromname, String password, String toAddress, String copyTo, String mailSubject, String mailContent, String mailserver, Boolean ssl, Int32 smtpport) in E:\aspnet2.0\nyweb_jia\Mvccom\Email.cs:204
Mvccom.Email.SendMail(String subjectStr, String bodyStr, String fromName, String toEmail) in E:\aspnet2.0\nyweb_jia\Mvccom\Email.cs:16
Nydesign.Controllers.OrderController.Save() in E:\aspnet2.0\nyweb_jia\Nydesign\Controllers\OrderController.cs:252
lambda_method(ExecutionScope , ControllerBase , Object[] ) +30
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +236
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +31
System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +85
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +655491
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +655491
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +288
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +658100
System.Web.Mvc.Controller.ExecuteCore() +125
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +48
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +15
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +85
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +51
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +454
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +263
版本信息: Microsoft .NET Framework 版本:2.0.50727.8793; ASP.NET 版本:2.0.50727.8762
首先,簡單回答如下:
.NETSmtpClient只支持通過STARTTLS加密。如果EnableSsl設置了標志,服務器必須使用STARTTLS響應Ehlo,否則會引發異常。
第二,為那些在未來偶然發現這個問題的人提供一個快速的SMTP歷史教訓:
回到當時,當服務還想提供加密時,他們被分配了一個不同的端口號,并且在這個端口號上,他們立即啟動了一個SSL連接。隨著時間的推移,他們意識到為一個服務浪費兩個端口號是愚蠢的,他們為服務設計了一種方法,允許使用STARTTLS在同一個端口上進行明文和加密。通信將開始使用明文,然后使用STARTTLS命令升級到加密連接。STARTTLS成為SMTP加密的標準。不幸的是,與實現新標準時一樣,與所有客戶端和服務器都存在大量的兼容性。
在我的示例中,我的用戶試圖將軟件連接到強制立即使用SSL連接的服務器,這是Microsoft在.NET中不支持的遺留方法。
解決方法:system.web.mail 用465端口,system.net.mail用587端口
廣告: