You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:28:08