Smtp dotnet核心网站使用MailKit发送电子邮件时出现的奇怪问题

Smtp dotnet核心网站使用MailKit发送电子邮件时出现的奇怪问题,smtp,.net-core,mailkit,.net-core-1.1,Smtp,.net Core,Mailkit,.net Core 1.1,我刚刚从一家供应商那里继承了一个网站,并对该网站的bug和源代码进行了检查 该应用程序基于dotnet core 1.1构建,使用Mailkit通过我们的公司代理通过SMTP发送电子邮件 问题是邮件发送功能在发送电子邮件时表现不稳定。大多数时候,我调试send方法时都会出错。我们使用AuthenticationRequired标志,并将用户ID和密码传递给MailKitAuthenticate方法 堆栈跟踪消息 身份验证无效身份验证:5.7.3身份验证未成功 在MailKit.Net.Smtp.

我刚刚从一家供应商那里继承了一个网站,并对该网站的bug和源代码进行了检查

该应用程序基于dotnet core 1.1构建,使用Mailkit通过我们的公司代理通过SMTP发送电子邮件

问题是邮件发送功能在发送电子邮件时表现不稳定。大多数时候,我调试send方法时都会出错。我们使用
Authentication
Required标志,并将用户ID和密码传递给MailKit
Authenticate
方法

堆栈跟踪消息

身份验证无效身份验证:5.7.3身份验证未成功

在MailKit.Net.Smtp.SmtpClient.Authenticate(编码, ICredentials凭据,CancellationToken CancellationToken)位于 MailKit.MailService.Authenticate(字符串用户名、字符串密码、, 取消令牌(取消令牌)位于 Rules.Emailer.SendNotification.Send(字符串收件人、字符串发件人、字符串 主题,字符串体)中的 C:\Workspace\G\Rules\Emailer\SendNotification.cs:line 94 at G.Rules.Emailer.UserNotifications.ResetPassword(字符串

代码片段

using (var client = new SmtpClient())
{
    client.Connect(EmailConfiguration.SmtpServer, EmailConfiguration.SmtpPort, EmailConfiguration.UseSsl);

    if (EmailConfiguration.RequiresAuthentication)
    {
        client.Authenticate(EmailConfiguration.Username, EmailConfiguration.Password);
    }

    //TODO: Only Send if PROD
    client.Send(message);
    client.Disconnect(true);
}

return true;
}
已连接到smtp://:25/?starttls=如果可用
S:220..COM微软ESMTP邮件服务于2018年3月27日星期二03:22:42-0400准备就绪
C:EHLO[10.207.8.74]
S:250-…COM你好[10.207.8.74]
S:250码
S:250-流水线
S:250-DSN
S:250-EnhancedStatus代码
S:250-STARTTLS
S:250-X-TLS
S:250-AUTH NTLM
S:250-X-EXPS GSSAPI NTLM
S:250-8比特
S:250-BINARYMIME
S:250分块
S:250-XEXCH50
S:250-XRDST
S:250 X阴影
C:开始
S:220 2.0.0 SMTP服务器就绪
C:EHLO[10.207.8.74]
S:250-…COM你好[10.207.8.74]
S:250码
S:250-流水线
S:250-DSN
S:250-EnhancedStatus代码
S:250-AUTH NTLM登录
S:250-X-EXPS GSSAPI NTLM
S:250-8比特
S:250-BINARYMIME
S:250分块
S:250-XEXCH50
S:250-XRDST
S:250 X阴影
C:身份验证登录
S:334 VXNlcm5hbWU6
C:
S:334 UGFzc3dvcmQ6
C:
S:535.7.3身份验证失败

到NTLM连接,您可以尝试:

await client.ConnectAsync(SmtpServer.SenderServer,SmtpServer.Port).ConfigureAwait(false);
if(client.AuthenticationMechanisms.Contains(“NTLM”))
{
var ntlm=new SaslMechanismNtlm(SmtpServer.UserName,SmtpServer.Password);
wait client.authenticateSync(ntlm).configurewait(false);
}
其他的
{
wait client.authenticateSync(SmtpServer.UserName,SmtpServer.Password);
}

添加了使用MailKit将电子邮件发送到SMTP的代码。我建议获取协议日志,以了解身份验证失败的原因。请参阅MailKit的常见问题解答,了解如何执行此操作。添加了协议登录i使用公司SMTP with System.Net.Mail即可,下面是一个示例SmtpClient=new SmtpClient{Host=mailSettings.Smtp.Network.Host,Port=mailSettings.Smtp.Network.Port,UseDefaultCredentials=false,Credentials=new NetworkCredential(mailSettings.Smtp.Network.UserName,mailSettings.Smtp.Network.Password),DeliveryMethod=SmtpDeliveryMethod.Network,//EnableSsl=true};协议日志在哪里?
Connected to smtp://<IP>:25/?starttls=when-available
S: 220 <Server_REDACTED>.<DOMAIN_REDACTED>.COM Microsoft ESMTP MAIL Service ready at Tue, 27 Mar 2018 03:22:42 -0400
C: EHLO [10.207.8.74]
S: 250-<Server_REDACTED>.<DOMAIN_REDACTED>.COM Hello [10.207.8.74]
S: 250-SIZE
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-X-ANONYMOUSTLS
S: 250-AUTH NTLM
S: 250-X-EXPS GSSAPI NTLM
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250-XEXCH50
S: 250-XRDST
S: 250 XSHADOW
C: STARTTLS
S: 220 2.0.0 SMTP server ready
C: EHLO [10.207.8.74]
S: 250-<Server_REDACTED>.<DOMAIN_REDACTED>.COM Hello [10.207.8.74]
S: 250-SIZE
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-AUTH NTLM LOGIN
S: 250-X-EXPS GSSAPI NTLM
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250-XEXCH50
S: 250-XRDST
S: 250 XSHADOW
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: <EMAIL_REDACTED>  
S: 334 UGFzc3dvcmQ6
C: <PSWD_REDACTED> 
S: 535 5.7.3 Authentication unsuccessful