MailKit SmtpClient错误:未连接的套接字上不允许进行该操作

时间:2018-12-11 21:48:43

标签: c# asp.net model-view-controller smtpclient mailkit

使用以下代码连接到远程电子邮件提供商时遇到问题:

MimeMessage message = new MimeMessage();
message.To.Add(new MailboxAddress("recipient@mydomain.com"));
message.From.Add(new MailboxAddress("sender@mydomain.com", "sender@mydomain.com"));
var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = "htmlbody<br />";
bodyBuilder.TextBody = "textbody";
message.Body = bodyBuilder.ToMessageBody();
message.Subject = "Subject";

using (var client = new SmtpClient())
{
    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
    client.Connect("send.one.com", 587, MailKit.Security.SecureSocketOptions.StartTls);  
    client.Authenticate("sender@mydomain.com", "***");
    client.Send(message);
    client.Disconnect(true);
}

我已经确认设置正确,因为它们可以在我的开发机上使用。我已经与电子邮件提供商和主机服务进行了交谈,他们都声明SMTP端口已打开。 MailDNS SPF记录应允许连接。我还尝试了MailKit之前的System.Net.Mail SmtpClient,结果相同。

有人对这个问题有经验吗?我们将不胜感激有关如何使此连接正常工作的建议。

这是在已部署的服务器(共享的Arvixe IIS服务器)上运行代码时出现的错误。

Server Error in '/' Application.
The operation is not allowed on non-connected sockets.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.IOException: The operation is not allowed on non-connected sockets.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 

[IOException: The operation is not allowed on non-connected sockets.]
System.Net.Sockets.NetworkStream.InitNetworkStream(Socket socket, FileAccess Access) +6762851
System.Net.Sockets.NetworkStream..ctor(Socket socket, Boolean ownsSocket) +44
MailKit.Net.Smtp.<ConnectAsync>d__70.MoveNext() +1110
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99

System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
MailKit.Net.Smtp.SmtpClient.Connect(String host, Int32 port, SecureSocketOptions options, CancellationToken cancellationToken) +55
MySolution.Functions.SendMail(MimeMessage message, Setting mail_settings) in C:\Users\Me\Documents\Visual Studio 2015\Projects\MySolution\MySolution\Functions.cs:401
MySolution.Functions.SendInstallationReport(Sale sale) in C:\Users\Me\Documents\Visual Studio 2015\Projects\MySolution\MySolution\Functions.cs:281
MySolution.Controllers.ReportsController.Sales(ViewText model, Sale record) in C:\Users\Me\Documents\Visual Studio 2015\Projects\MySolution\MySolution\Controllers\ReportsController.cs:236 lambda_method(Closure , ControllerBase , Object[] ) +147

System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +157
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49


System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32

System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +228
System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49


System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49

System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26

System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28

System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9

System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9873665
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET 
Version:4.7.3163.0

0 个答案:

没有答案