MailKit与微软365服务器的SMTP OAuth不成功。

问题描述 投票:0回答:1

我使用MailKit 2.6.0.0连接到Microsoft 365使用OAuth与POP3,IMAP和SMTP认证。 Imap客户端和Pop3C客户端认证成功,但Smtp客户端不能。 这是MailKit的协议日志。

Connected to smtp://smtp.office365.com:587/?starttls=always
S: 220 MN2PR04CA0011.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sat, 30 May 2020 07:48:32 +0000
C: EHLO [192.168.1.240]
S: 250-MN2PR04CA0011.outlook.office365.com Hello [my-ip]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 SMTP server ready
C: EHLO [192.168.1.240]
S: 250-MN2PR04CA0011.outlook.office365.com Hello [my-ip]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-AUTH LOGIN XOAUTH2
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: AUTH XOAUTH2 BASE64USERANDTOKEN
S: 535 5.7.3 Authentication unsuccessful [MN2PR04CA0011.namprd04.prod.outlook.com]
C: QUIT
S: 221 2.0.0 Service closing transmission channel

我已经破解了BASE64USERANDTOKEN的值 它看起来和成功的POP3IMAP连接中提供的值一模一样. 我不知道SMTP认证不成功是由于微软365的配置错误还是协议对话中的问题造成的。 我正在使用作为我的MSDN订阅福利提供的Microsoft 365开发者订阅。 我找不到任何特定于SMTP的配置设置,而且我已经使用了正确的范围(https:/outlook.office365.comSMTP.Send。}在交换访问toke的授权代码时。 我在Microsoft 365中也找不到任何有助于诊断问题的错误日志条目。

至于协议对话,我注意到微软的描述是在 https:/docs.microsoft.comen-gbexchangeclient-developerlegacy-protocolshow-toauthenticat-an-imap-pop-smtp-application-by-using-oauth。

[connection begins]
C: auth xoauth2
S: 334
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
S: 235 2.7.0 Authentication successful
[connection continues...]

不同于谷歌的在 https:/developers.google.comgmailimapxoauth2-protocol。 这就像MailKit协议日志一样。

[connection begins]
S: 220 mx.google.com ESMTP 12sm2095603fks.9
C: EHLO sender.example.com
S: 250-mx.google.com at your service, [172.31.135.47]
S: 250-SIZE 35651584
S: 250-8BITMIME
S: 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
S: 250-ENHANCEDSTATUSCODES
S: 250 PIPELINING
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
S: 235 2.7.0 Accepted
[connection continues...]

这可能是导致认证失败的原因吗?

office365 mailkit smtp-auth
1个回答
1
投票

找到了认证不成功的实际原因。 正如在原帖中提到的那样,我正在使用我的Microsoft 365开发者订阅,这给了我一个看起来像schlagermeier.onmicrosoft.com(不是真实的,伙计们)的域名。 我进入了该账户的Microsoft 365管理门户,并提供了一个 "引导配置 "的经验或类似的东西。 这是一种作为一系列网页的向导用户界面。 其中一个页面有一个 "选择域 "和两个单选按钮。 其中一个按钮被标记为 "使用 schlagermeier.onmicrosoft.com",另一个是 "输入域名",有一个输入框,输入你已经注册并拥有的域名(例如 schlagermeier.com)。 这样看来,你必须明确设置一个域名才能使用SMTP,这是有道理的。 我只是以为会使用onmicrosoft域名。

© www.soinside.com 2019 - 2024. All rights reserved.