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端口
广告: