【发布时间】:2022-01-03 03:06:52
【问题描述】:
我正在使用 Mailkit 在我的 asp.net core 3.1 应用程序中发送邮件。 我可以使用我的谷歌帐户连接和验证。但是当我转而使用我的企业帐户时,我无法使用 starttls 选项和以下代码进行身份验证:
client.CheckCertificateRevocation = false;
client.Connect( Host,25, SecureSocketOptions.StartTls);
client.Authenticate(new NetworkCredential(Username, Password));
结果为“535: 5.7.3 Authentication unsuccessful”。 但是,我可以使用以下代码使用 .net smtpclient 进行连接:
var smtpclient= new System.Net.Mail.SmtpClient();
ServicePointManager.ServerCertificateValidationCallback =ValidateServerCertificate
smtpclient.Host = Host;
smtpclient.Port = 25;
smtpclient.EnableSsl = true;
var cred= new System.Net.NetworkCredential();
cred.UserName =Username;
cred.Password = Password;
smtpclient.Credentials = cred;
smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpclient.Send(message);
- 如果我从用户名中删除了域名,我可以进行身份验证,但不能启动 starttls 模式。
- 我可以使用 starttls 匿名连接。
那么我该如何解决这个问题呢? 这是我的日志示例:
Connected to smtp://ip:25/?starttls=always
S: 220 xxxxxxx Microsoft ESMTP MAIL Service ready at dt
C: EHLO [ip]
S: 250-xxxx Hello [ip]
S: 250-SIZE 104857600
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-X-ANONYMOUSTLS
S: 250-AUTH NTLM LOGIN
S: 250-X-EXPS GSSAPI NTLM
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 XRDST
【问题讨论】:
-
编辑您的问题。显示您正在使用的代码,删除您不使用的代码。显示错误信息。提供有关您正在连接的内容(O365、Exchange 等)的详细信息。你的问题提到了谷歌。谷歌授权与微软不同。 Google 部分没有相关性。
-
我帖子中的代码是我正在使用的代码。我无法使用凭据进行身份验证,但是我可以匿名身份验证。我不知道Mailkit或smtp服务器的这个问题是否不支持身份验证?为什么 .net smtpclient 使用凭据进行身份验证?