Exchange Webservices: Einträge für andere Mailboxen

Als flexible und platformübergreifende Methode auf Exchange Mailbox Daten (Termine, Kalender, Mails, Kontakte) zuzugreifen haben sich seit Exchange 2007 die Exchange Webservices etabliert.

Die meisten vorhandenen Beispiele zeigen die Verwendung der Webservices für die eigene Mailbox. Ich hatte jetzt jedoch die Anforderung Einträge in Kalendern von anderen Mailboxen vorzunehmen. Voraussetzung hierfür ist natürlich dass mein Benutzer Zugriff auf die andere Mailbox hat - dies wurde in unserem Fall mit Outlook über die Delegates-Funktion eingerichtet (Tools + Options + Delegates)

Als Basis findet hier das Beispiel aus MSDN - Kalendereintrag erzeugen

Dies zeigt recht schön wie das für die eigene Mailbox geht. Wenn man sich genauer ansieht wo das Ziel der Operation festgelegt wird kann man sehr leicht sehen dass hier die DistinguishedFolderID des eigenen Kalenderordners ermittelt wird.

     // Identify the destination folder that will contain the appointment.
    DistinguishedFolderIdType folder = new DistinguishedFolderIdType();
    folder.Id = DistinguishedFolderIdNameType.calendar;

es geht nun also nur noch darum die DistinguishedFolderID des Kalenders einer anderen Mailbox herauszufinden - das geht so:

 DistinguishedFolderIdType[] folder = { new DistinguishedFolderIdType() };
folder[0].Id = DistinguishedFolderIdNameType.calendar;
folder[0].Mailbox = new EmailAddressType();
folder[0].Mailbox.EmailAddress = emailAddressOfOtherPerson;

CreateItemType createItemRequest = new CreateItemType();
createItemRequest.SavedItemFolderId = new TargetFolderIdType();
createItemRequest.SavedItemFolderId.Item = folder;

Beides kann man nun kombinieren und kann somit Einträge in anderer Leute Kalender vornehmen - sehr elegant wie ich finde.

Das Ganze ist natürlich vom Konzept her auch auf andere Objekte (Mails, Aufgaben, Kontakte) übertragbar)

 

viel spass beim Probieren

Sven