Calendar EWS:访问共享日历

Calendar EWS:访问共享日历,calendar,exchange-server,exchangewebservices,ews-managed-api,Calendar,Exchange Server,Exchangewebservices,Ews Managed Api,我正在尝试使用Exchange Web服务访问日历数据,但我似乎不知道如何访问其他用户共享的日历,而这些日历不是他们的默认日历。假设我公司的另一个用户创建了一个共享日历并与我共享,我甚至找不到日历文件夹,更不用说获取其中的项目了 答案可以是EWS管理的API(版本1.0或1.1)、直接的服务对象,甚至是需要发送到服务器的SOAP消息的XML正文。我只需要一个起点。非常感谢您的帮助。这相当复杂,因为您需要相关文件夹的文件夹ID。除了访问日历文件夹外,您还需要对邮箱的根文件夹具有读取权限。这允许您执

我正在尝试使用Exchange Web服务访问日历数据,但我似乎不知道如何访问其他用户共享的日历,而这些日历不是他们的默认日历。假设我公司的另一个用户创建了一个共享日历并与我共享,我甚至找不到日历文件夹,更不用说获取其中的项目了


答案可以是EWS管理的API(版本1.0或1.1)、直接的服务对象,甚至是需要发送到服务器的SOAP消息的XML正文。我只需要一个起点。非常感谢您的帮助。

这相当复杂,因为您需要相关文件夹的文件夹ID。除了访问日历文件夹外,您还需要对邮箱的根文件夹具有读取权限。这允许您执行FindFolder操作来检索该id。

以下是我如何做到这一点的:

Dim _cal As New Microsoft.Exchange.WebServices.Data.FolderId(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(_otherAddress))
Dim _calendarView As New Microsoft.Exchange.WebServices.Data.CalendarView(_startTime.Date, _endTime.Date.AddDays(1))

For Each appointmentItem As Microsoft.Exchange.WebServices.Data.Appointment In _
    service.FindAppointments( _
    _cal, _
    _calendarView)
Next
注意:这只适用于默认日历,因为这是我的需求所需的全部


编辑:对于非默认日历,您是否研究过该方法,我没有尝试过,但这可能不需要根收件箱访问。

我知道这是在最初的帖子发布几年后,但只是为了帮助有类似问题的人,请看


它使用EWS API的WellKnownFolderName.PublicFoldersRoot访问公用文件夹,并使用FolderId浏览到请求的子文件夹。

如果需要在Java中执行此操作,以下是一些有帮助的方法和答案。它有一个工作的代码样本。在微软让Azure V2.0 REST API正常工作之前,这是一种方法

我不明白为什么那是必要的。忘记EWS,如果我没有对其他员工的根文件夹的读取权限,但他们创建了一个共享文件夹并通过Outlook与我共享,我就可以看到它。他们共享文件夹是否自动授予我对其根文件夹的读取权限?如果没有,为什么Outlook可以查看共享日历而不能查看EWS?谢谢Seph,但正如我在问题中所述,我需要访问共享的非默认日历。我编辑了我的答案。如果这有帮助,另一个选项是让您的用户自动订阅共享日历(因此,在用户端,您可以告诉服务器此用户的folderId是什么),这不需要您具有邮箱的root访问权限ExchangeService.Credentials帐户需要什么权限/角色?