7

Próbuję użyć usług sieci Web Exchange w celu uzyskania dostępu do danych kalendarza, ale nie mogę wymyślić, jak uzyskać dostęp do kalendarzy udostępnionych przez innych użytkowników, gdy nie jest to ich domyślny kalendarz. Zakładając, że inny użytkownik w mojej firmie utworzył udostępniony kalendarz i udostępnił go ze mną, nie mogę nawet znaleźć folderu kalendarza, nie mówiąc już o tym, aby uzyskać dostęp do jego elementów.EWS: Dostęp do udostępnionych kalendarzy

Odpowiedzi można uzyskać w odniesieniu do zarządzanego przez EWS API (wersja 1.0 lub 1.1), obiektów usług bezpośrednio lub nawet tylko treści XML komunikatu SOAP, które należy wysłać na serwer. Po prostu potrzebuję jakiegoś punktu wyjścia. Każda pomoc będzie bardzo ceniona.

Odpowiedz

3

Jest to dość skomplikowane, ponieważ potrzebny jest folder FolderId danego folderu. Oprócz dostępu do folderu kalendarza będziesz potrzebować prawa do odczytu do folderu głównego skrzynki pocztowej. Umożliwia to wykonanie operacji FindFolder w celu pobrania tego identyfikatora.

+4

Nie rozumiem, dlaczego byłoby to konieczne. Zapominając o EWS, jeśli nie mam dostępu do odczytu do folderu głównego innego pracownika, ale utworzą one folder współdzielony i udostępni mi go w Outlooku, widzę go. Czy udostępnianie folderu automatycznie daje mi prawo odczytu do folderu głównego? Jeśli nie, dlaczego program Outlook będzie mógł wyświetlać udostępniony kalendarz, ale nie EWS? –

7

Oto, jak udało mi się to zrobić:

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 

Uwaga: To działa tylko dla domyślnego kalendarza, jak to wszystko, co potrzebne do moich wymagań

EDIT: Dla niż domyślne kalendarzy, mają zajrzałeś do metody ExchangeService.FindFolders, nie próbowałem, ale to może nie wymagać dostępu do skrzynki odbiorczej root.

+1

Dzięki Seph, ale jak powiedziałem w moim pytaniu, potrzebuję dostępu do udostępnionego niestandardowego kalendarza. –

+1

Edytowałem swoją odpowiedź, jeśli to pomaga, inną opcją jest automatyczne przydzielanie użytkownikom swoich udostępnianych kalendarzy (więc po stronie użytkownika mówisz serwerowi, co jest identyfikatorem folderu dla tego użytkownika), to nie wymagałoby dostępu użytkownika root do skrzynki pocztowej – Seph

+0

Jakie uprawnienia/rola ma konto ExchangeService.Credentials? – Brent

1

Wiem, że to kilka lat po pierwotnym wpisie, ale tylko po to, aby pomóc ludziom z podobnymi problemami, spójrz na this.

Używa funkcji WellKnownFolderName.PublicFoldersRoot interfejsu EWS API, aby uzyskać dostęp do folderu publicznego i przegląda podany podfolder za pomocą opcji FolderId.