为什么我在 Redemption 中调用 GetSharedMailbox 时收到 401 HTTP ERROR?

Why am I receiving the 401 HTTP ERROR when calling GetSharedMailbox in Redemption?

我正在使用 Redemption 访问共享邮箱。我使用的登录方法是 Session.LogonExchangeMailbox.

只要我不尝试访问共享邮箱,它似乎工作正常。当我尝试访问共享邮箱时,出现以下错误:

Redemption.RDOStores: 找不到商店 DN 无法检索自动发现 XML:GetAutodiscoverForEmailAddress:此地址在 AD 中没有自动发现服务器 WinHttpSendRequest 错误(bcg.com/autodiscover/autodiscover.xml):ERROR_WINHTTP_TIMEOUT WinHttpSendRequest 错误(bcgcloud.mail.onmicrosoft.com/autodiscover/autodiscover.xml):ERROR_WINHTTP_NAME_NOT_RESOLVED WinHttpSendRequest 错误(自动发现。bcgcloud.mail.onmicrosoft.com/autodiscover/autodiscover.xml):ERROR_WINHTTP_CANNOT_CONNECT 来自 https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml

的 HTTP 错误 401

我尝试了什么:

  1. 使用 RDO.Credentials.add 添加凭据 - 不会改变任何东西
  2. LogonHostedExchangeMailbox - 在我的情况下根本不起作用 - 我猜是因为 Basic Auth 被禁用了(我无法获得现代身份验证的 OAuth 令牌)

使用 Session.ExchangeMailboxServerVersion 检查服务器版本显示我们有 15.20.4995.8 - 看起来我们有 Exchange 2019,其中不再支持 RPC-Over-HTTP .那么问题就是 Session.LogonExchangeMailbox 即使使用 DefaultFolder 也如何工作?为什么只有在我尝试访问共享邮箱时才会出错?

谢谢。

看来你的选择只有LogonHostedExchangeMailbox方法。这是救赎的作者写的:

LogonExchangeMailbox creates a temporary profile that uses plain RPC connection. Exchange 2013 and 2016 do not support RPC connections anymore, only RPC-over-HTTP or MAPI-over-HTTP. You need to use LogonHostedExchangeMailbox for that.

有关详细信息,请参阅 What is a RDOSession.LogonExchangeMailbox server name for outlook.com?

如果是 Exchange profiles/accounts,我建议改用 EWS。参见 Explore the EWS Managed API, EWS, and web services in Exchange for more information. Also you may consider using the Graph API

兑换需要检索自动发现 XML 才能打开共享邮箱。在大多数情况下,自动发现检索仍应使用基本身份验证,但如果禁用基本身份验证,打开实际邮箱仍需要 OAuth 令牌。您的代码 运行 是在 COM 加载项还是独立应用程序中?