首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Microsoft365服务器上执行MailKit OAuth失败

在Microsoft365服务器上执行MailKit OAuth失败
EN

Stack Overflow用户
提问于 2020-05-30 17:03:46
回答 1查看 1.3K关注 0票数 1

我正在使用MailKit 2.6.0.0通过OAuth连接到Microsoft365,以便使用POP3、IMAP和SMTP进行身份验证。ImapClient和Pop3Client成功通过身份验证,但SmtpClient没有。以下是来自MailKit的协议日志:

代码语言:javascript
运行
复制
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

我已经破解了POP3值,它看起来与成功的BASE64USERANDTOKEN连接中提供的一模一样。我不知道SMTP身份验证失败是由Microsoft 365的错误配置还是协议对话中的问题造成的。我正在使用Microsoft 365 Developer订阅作为我的MSDN订阅的优势。我找不到任何特定于SMTP的配置设置,并且在交换访问令牌的授权码时使用了正确的作用域(https://outlook.office365.com/SMTP.Send} )。我在Microsoft 365中也找不到任何错误日志条目,这将有助于诊断问题。

至于协议对话,我注意到微软在https://docs.microsoft.com/en-gb/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth上的描述

代码语言:javascript
运行
复制
[connection begins]
C: auth xoauth2
S: 334
C: dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
S: 235 2.7.0 Authentication successful
[connection continues...]

与谷歌在https://developers.google.com/gmail/imap/xoauth2-protocol上的不同,它类似于MailKit协议日志:

代码语言:javascript
运行
复制
[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...]

这是身份验证失败的可能原因吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-03 01:33:42

已找到身份验证失败的实际原因。正如在最初的帖子中提到的,我正在使用我的Microsoft365开发人员订阅,这给了我一个类似于schlagermeier.onmicrosoft.com的域名(伙计们,这不是真的)。我进入了该账号的Microsoft 365管理门户,得到了一个“指导配置”或诸如此类的体验。这是一种向导ui,就像一系列网页一样。其中一个页面有一个带有两个单选按钮的“选择域”。一个按钮被标记为"Use schlagermeier.onmicrosoft.com“,另一个按钮是"Enter domain”,输入框中显示的是你已经注册并拥有的域名(例如schlagermeier.com)。因此,您似乎必须显式设置一个域才能让SMTP工作,这是有意义的。我只是假设会使用onmicrosoft域名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62100221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档