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瀏覽到請求的子文件夾。