7

我尝试使用Exchange Web服务访问日历数据,但似乎无法弄清楚如何访问其他用户在不是其默认日历时共享的日历。假设我公司的其他用户创建了共享日历并与我共享,我甚至找不到日历文件夹,更不用说获取其中的项目了。EWS:访问共享日历

答案可以根据EWS Managed API(版本1.0或1.1),服务对象直接提供,或者甚至只是需要发送到服务器的SOAP消息的XML正文。我只需要某种起点。任何帮助将不胜感激。

回答

3

这很复杂,因为您需要相关文件夹的FolderId。除了访问日历文件夹外,您还需要读取邮箱的根文件夹。这使您可以执行FindFolder操作来检索该ID。

+4

我不明白为什么这将是必要的。忘记EWS,如果我没有读取其他员工的根文件夹的权限,但他们创建了一个共享文件夹并通过Outlook与我分享,我可以看到它。他们共享文件夹是否会自动让我读取其根文件夹?如果没有,为什么Outlook能够查看共享日历但不能查看EWS? – 2010-11-22 15:31:47

7

下面是如何成功地做到这一点:

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 

注:默认日历这只作品,因为这是所有我需要为我的要求

编辑:对于非默认日历,有你看着ExchangeService.FindFolders方法,我没有尝试,但这可能不需要根收件箱访问。

+1

感谢Seph,但正如我在我的问题中所述,我需要访问共享的非默认日历。 – 2011-05-07 07:41:20

+1

我编辑了我的答案,看看是否有帮助,另一种选择是让用户自动订阅他们的共享日历(所以在用户方面,你告诉你的服务器folderId是为这个用户做的),这不需要你拥有root权限到邮箱 – Seph 2011-05-08 00:40:35

+0

ExchangeService.Credentials帐户需要什么权限/角色? – Brent 2014-05-15 13:21:13

1

我知道这是几年后的原始帖子,但只是为了帮助有类似问题的人,看看this

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