7

J'essaie d'utiliser les services Web Exchange pour accéder aux données du calendrier, mais je n'arrive pas à comprendre comment accéder aux calendriers qui ont été partagés par d'autres utilisateurs lorsque ce n'est pas leur calendrier par défaut. En supposant qu'un autre utilisateur de mon entreprise ait créé un calendrier partagé et l'ait partagé avec moi, je ne peux même pas trouver le dossier du calendrier, et encore moins récupérer les éléments qu'il contient. Les réponses peuvent être en termes d'EWS Managed API (version 1.0 ou 1.1), les objets de service directement, ou même juste le corps XML du message SOAP qui doit être envoyé au serveur. J'ai juste besoin d'une sorte de point de départ. Toute aide serait grandement appréciée.EWS: Accéder aux calendriers partagés

Répondre

3

Ceci est plutôt compliqué, car vous avez besoin de l'ID de dossier du dossier en question. En plus de l'accès au dossier du calendrier, vous aurez besoin d'un accès en lecture au dossier racine de la boîte aux lettres. Cela vous permet d'exécuter une opération FindFolder pour récupérer cet identifiant.

+4

Je ne vois pas pourquoi cela serait nécessaire. En oubliant le serveur EWS, si je n'ai pas accès en lecture au dossier racine d'un autre employé, mais qu'il crée un dossier partagé et le partage avec moi via Outlook, je peux le voir. Est-ce que le fait de partager le dossier me donne automatiquement un accès en lecture à leur dossier racine? Si non, pourquoi Outlook pourrait-il voir le calendrier partagé mais pas EWS? –

7

Voici comment j'ai réussi à le faire:

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 

Note: ceci ne fonctionne que pour le calendrier par défaut car c'est tout ce que je avais besoin pour mes besoins

Edit: Pour les calendriers non par défaut, ont vous avez regardé dans la méthode ExchangeService.FindFolders, je n'ai pas essayé, mais cela ne nécessite pas l'accès à la boîte de réception root.

+1

Merci Seph, mais comme je l'ai dit dans ma question, j'ai besoin d'accéder à un calendrier partagé par défaut. –

+1

J'ai édité ma réponse voir si cela aide, une autre option est d'avoir vos utilisateurs souscrivent automatiquement leurs calendriers partagés (du côté des utilisateurs, vous dites à votre serveur ce que folderId est pour cet utilisateur), cela ne nécessite pas d'accès root à la boîte aux lettres – Seph

+0

De quelles autorisations/rôle le compte ExchangeService.Credentials a-t-il besoin? – Brent

1

Je sais que c'est quelques années après le post original, mais juste pour aider les personnes ayant des problèmes similaires, regardez this.

Il utilise WellKnownFolderName.PublicFoldersRoot de l'API EWS pour accéder au dossier public et navigue jusqu'au sous-dossier demandé à l'aide de FolderId.