使用MailKit 2.15.0对接MS Exchange服务器:收件认证正常但发件认证失败的问题求助
MailKit 2.15.0对接MS Exchange服务器:收件认证正常但发件认证失败的问题求助
大家好,我现在遇到一个头疼的问题:用MailKit 2.15.0对接公司的MS Exchange邮件服务器,读取邮件的功能认证完全正常,但发送邮件时始终无法通过认证,试了几种方式都没解决,想请教下各位有没有类似的经验或者解决方案。
先给大家看下我读取邮件的代码,这部分是可以正常工作的:
private static void ReadEmails() { var client = new ImapClient(new ProtocolLogger("logs/imap.log", false)); client.CheckCertificateRevocation = false; client.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; client.SslProtocols |= SslProtocols.Tls; client.Connect("our.ms.exchange.server.com", 993, SecureSocketOptions.Auto); #region Auth Section client.AuthenticationMechanisms.Clear(); client.AuthenticationMechanisms.Add("PLAIN"); var saslMechanism = new SaslMechanismPlain("domain\\username", "password"); client.Authenticate(saslMechanism); #endregion // 读取邮件的逻辑(此处省略) client.Disconnect(true); }
再看下发送邮件的初始代码,这部分会抛出认证异常:
private static void SendEmail() { using var client = new SmtpClient(new ProtocolLogger("logs/smtp.log", false)); client.CheckCertificateRevocation = false; client.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; client.SslProtocols |= SslProtocols.Tls; client.Connect("our.ms.exchange.server.com", 25, SecureSocketOptions.Auto); #region Auth Section client.AuthenticationMechanisms.Clear(); client.AuthenticationMechanisms.Add("PLAIN"); var saslMechanism = new SaslMechanismPlain("domain\\usernaame", "password"); client.Authenticate(saslMechanism); #endregion // 发送邮件的逻辑(此处省略) client.Disconnect(true); }
运行发送邮件代码时,会抛出这个异常:
SmtpCommandException: 5.7.4 Unrecognized authentication type
我以为是认证机制不对,于是尝试换成NTLM认证,修改了发件的认证部分代码:
client.AuthenticationMechanisms.Clear(); client.AuthenticationMechanisms.Add("NTLM"); var saslMechanism = new SaslMechanismNtlm(new NetworkCredential("username", "password", "domain")); client.Authenticate(saslMechanism);
结果还是抛出异常:
MailKit.Security.AuthenticationException: '535: 5.7.3 Authentication unsuccessful'
我可以确定凭据是完全正确的,因为读取邮件用的是同一个账号密码,完全没有问题。
下面是失败的SMTP日志内容:
Connected to smtp://mail.SERVER.com:25/?starttls=when-available S: 220 s-mail3.SERVER.local Microsoft ESMTP MAIL Service ready at Mon, 10 Apr 2023 22:52:04 +0300 C: EHLO DEV-25 S: 250-s-mail3.SERVER.local Hello [192.168.243.26] S: 250-SIZE 36700160 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 XRDST C: STARTTLS S: 220 2.0.0 SMTP server ready C: EHLO DEV-25 S: 250-s-mail3.SERVER.local Hello [192.168.243.26] S: 250-SIZE 36700160 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 XRDST C: AUTH NTLM ******** S: 334 TlRMTVNTUAACAAAAGAAYADgAAAAFgomiVL4Edxo2a2MAAAAAAAAAAMYAxgBQAAAABgOAJQAAAA9JAE4AVABFAEwATABFAEMAVABJAEsAQQACABgASQBOAFQARQBMAEwARQBDAFQASQBLAEEAAQAOAFMALQBNAEEASQBMADMABAAkAEkATgBUAEUATABMAEUAQwBUAEkASwBBAC4AbABvAGMAYQBsAAMANABzAC0AbQBhAGkAbAAzAC4ASQBOAFQARQBMAEwARQBDAFQASQBLAEEALgBsAG8AYwBhAGwABQAkAEkATgBUAEUATABMAEUAQwBUAEkASwBBAC4AbABvAGMAYQBsAAcACAD7Itjs5WvZAQAAAAA= C: ******** S: 535 5.7.3 Authentication unsuccessful
请问有没有人知道发送邮件时应该用哪种认证方式,或者我哪里配置错了?
备注:内容来源于stack exchange,提问作者r00xus
相关产品推荐
相关产品推荐

