ASP.Net MVC 5 Sending Email 错误:根据验证程序,远程证书无效
Posted
技术标签:
【中文标题】ASP.Net MVC 5 Sending Email 错误:根据验证程序,远程证书无效【英文标题】:ASP.Net MVC 5 Sending Email error: The remote certificate is invalid according to the validation procedure 【发布时间】:2016-04-20 07:42:38 【问题描述】:我有一个 ASP.Net MVC 5 应用程序,当我发送电子邮件时出现以下错误:
远程证书根据验证无效 过程。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详情: System.Security.Authentication.AuthenticationException:远程 根据验证程序,证书无效。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[AuthenticationException: 远程证书无效根据 到验证程序。] System.Net.Mail.ConnectAndHandshakeAsyncResult.End(IAsyncResult 结果)+113 System.Net.Mail.SmtpClient.ConnectCallback(IAsyncResult 结果)+61
[SmtpException: 发送邮件失败。] System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)+144 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+84 VRM5.Controllers.d__5.MoveNext() 在 C:\Users\mehdi\Documents\Visual Studio 2015\Projects\VRM5\VRM5\Controllers\VRsController.cs:289 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)+144 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+84 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult 异步结果)+143 System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +23 System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d() +112 System.Web.Mvc.Async.c__DisplayClass46.b__3f() +452 System.Web.Mvc.Async.c__DisplayClass33.b__32(IAsyncResult asyncResult) +15 System.Web.Mvc.Async.c__DisplayClass2b.b__1c() +37 System.Web.Mvc.Async.c__DisplayClass21.b__1e(IAsyncResult 异步结果)+241 System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult 异步结果)+111 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult 异步结果)+19 System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +51 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult 异步结果)+111 System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +195
我的电子邮件发送代码:
var message = new MailMessage();
//-----Send Email------------------------------------------//
message.To.Add(new MailAddress(Q_contacts.ContactEmail)); // replace with valid value
if(CheckAD==1)
message.CC.Add(new MailAddress( mehdi@hotmail.com"));
message.From = new MailAddress(vR.Email); // replace with valid value
message.Subject = "Vehicle Request -"+vR.Distination;
//message.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
message.Body = MS_1;
message.IsBodyhtml = true;
using (var smtp = new SmtpClient())
var credential = new NetworkCredential
UserName = "mehdi@abc.org", // replace with valid value
Password = "Abc@abc123" // replace with valid value
;
smtp.Credentials = credential;
smtp.Host = "mr09.hv.abc.org";
smtp.Port = 25;
smtp.EnableSsl = false;
await smtp.SendMailAsync(message);
return RedirectToAction("Index");
【问题讨论】:
错误消息的 google 提供了一个in depth walk though of how to troubleshoot this problem。听起来你也需要 EnableSsl。 不,它不能解决我的问题 我已经查看了这个博客 【参考方案1】:您在此处看到的问题与用于远程电子邮件环境提供的 SMTP 服务的 SSL 证书有关。
要检查 SSL 证书,您可以通过以下方式使用 openSSL:
openssl s_client -connect exchange01.int.contoso.com:25 -starttls smtp
根据您的情况,多种解决方案可能适用于此处(请参阅here 了解更多信息):
主机名不在 SSL 证书中。然后必须重新配置远程邮件服务器。 远程邮件服务器仍使用自签名证书。你可以尝试在你的服务器上导入它(见上面的链接)。 此处使用的某些 SSL 证书已过时。然后必须重新配置远程邮件服务器。 认证链中的某些部分不受信任。要解决此问题,您需要将它们导入服务器上受信任的 SSL 存储(参见上面的链接)。【讨论】:
以上是关于ASP.Net MVC 5 Sending Email 错误:根据验证程序,远程证书无效的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?
解读ASP.NET 5 & MVC6系列:ASP.NET 5简介