无法使用 c# ExchangeWebServics 访问 Exchange Public 文件夹日历

Cannot access Exchange Public Folder Calendar with c# ExchangeWebServics

我正在尝试读取 public 文件夹日历事件,但没有成功。 我正在根据 Microsoft 文档使用仅限应用程序进行身份验证,并且我能够获得访问令牌。

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth

我在 Exchange 管理中心创建了一个 public 文件夹日历,在上面创建了一个测试事件,并启用了它的电子邮件,结果如下所示:CalendarName@MSDx123456.onmicrosoft.com

下面是给出异常的代码部分:“SMTP 地址没有与之关联的邮箱。”

我创建了一个 public 文件夹邮箱,但我无法在 Exchange 管理中心的任何地方找到将 public 文件夹邮箱关联到 public 文件夹的地方。

        calendarFolderId = new FolderId(WellKnownFolderName.Calendar,CalendarConfig.CalendarEmail);
        FolderView folderView = new FolderView(1);
        var folders = await ewsClient.FindFolders(calendarFolderId, folderView);

原来问题是我在配置 ewsClient 时模拟了错误的用户。 在 ImpersonatedUserId 中,我使用的是 public 文件夹邮箱。 我不得不使用另一个有权访问 public 文件夹的用户邮箱。

        ewsClient = new ExchangeService();
        ewsClient.Url = new Uri(config.ServiceId);
        ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);
        ewsClient.ImpersonatedUserId =
            new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "publicFolderMail@MSDx123456.onmicrosoft.com");

        ewsClient = new ExchangeService();
        ewsClient.Url = new Uri(config.ServiceId);
        ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);
        ewsClient.ImpersonatedUserId =
            new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "Impersonated-User-Mailbox@MSDx123456.onmicrosoft.com");