Utiliser les services Web Exchange (EWS) à partir d’un complément Outlook.
Article
Votre complément Outlook peut utiliser les services Web Exchange (EWS) à partir d’un environnement qui s’exécute Exchange Server (local). EWS est un service web disponible sur le serveur qui fournit l’emplacement source de l’interface utilisateur du complément. Cette rubrique fournit des exemples expliquant comment un complément Outlook peut demander des informations à partir d’EWS.
Important
Les jetons Exchange hérités sont déconseillés. À partir de février 2025, nous commencerons à désactiver l’identité et les jetons de rappeld’utilisateur Exchange hérités pour les locataires Exchange Online. Pour plus d’chronologie et de détails, consultez notre page FAQ. Cela fait partie de l’initiative Avenir sécurisé de Microsoft, qui fournit aux organisations les outils nécessaires pour répondre au paysage actuel des menaces. Les jetons d’identité utilisateur Exchange fonctionnent toujours pour Exchange en local. L’authentification d’application imbriquée est l’approche recommandée pour les jetons à l’avenir.
La façon dont vous appelez un service web varie en fonction de l’emplacement du service web. Les tableaux suivants répertorient les différentes façons dont vous pouvez appeler un service web en fonction de l’emplacement.
Emplacement des services web
Méthode d’appel du service Web
Serveur Exchange qui héberge la boîte aux lettres cliente
Utilisez la méthode mailbox.makeEwsRequestAsync pour appeler les opérations EWS qui permettent d'ajouter des compléments de prise en charge. Le serveur Exchange qui héberge la boîte aux lettres expose également EWS.
Serveur web qui fournit l’emplacement source de l’interface utilisateur du complément
Appelez le service web au moyen des techniques JavaScript standard. Le code JavaScript présent dans le cadre de l’interface utilisateur s’exécute dans le contexte du serveur web qui fournit l’interface utilisateur. Il est donc capable d’appeler les services web sur ce serveur sans provoquer d’erreur de script intersite.
Tous les autres emplacements
Créez un proxy pour le service web sur le serveur web qui fournit l’emplacement source de l’interface utilisateur. Si vous ne fournissez pas de proxy, les erreurs de script intersites empêchent votre complément de s’exécuter. L’un des moyens de fournir un proxy consiste à utiliser JSON/P. Pour plus d’informations, voir Confidentialité et sécurité pour les compléments Office.
Utilisation de la méthode makeEwsRequestAsync pour accéder aux opérations EWS
Important
Les appels et opérations EWS ne sont pas pris en charge dans les compléments exécutés dans Outlook sur Android et iOS.
Vous pouvez utiliser la méthode mailbox.makeEwsRequestAsync pour envoyer une requête EWS au serveur Exchange local qui héberge la boîte aux lettres de l’utilisateur.
EWS prend en charge en charge différentes opérations sur un serveur Exchange, par exemple, les opérations au niveau de l’élément pour copier, rechercher, mettre à jour ou envoyer un élément, et les opérations au niveau du dossier pour créer, obtenir ou mettre à jour un dossier. Pour effectuer une opération EWS, créez une requête SOAP XML pour cette opération. Une fois l’opération terminée, vous obtenez une réponse SOAP XML qui contient des données pertinentes pour l’opération. Les requêtes et réponses SOAP EWS suivent le schéma défini dans le fichier Messages.xsd . Comme les autres fichiers de schéma EWS, le fichier Message.xsd se trouve dans le répertoire virtuel IIS qui héberge EWS.
Pour utiliser la makeEwsRequestAsync méthode pour lancer une opération EWS, fournissez les éléments suivants :
XML de la requête SOAP pour cette opération EWS en tant qu’argument du paramètre de données .
Fonction de rappel (en tant qu’argument de rappel ).
Toutes les données d’entrée facultatives pour cette fonction de rappel (en tant qu’argument userContext ).
Une fois la requête SOAP EWS terminée, Outlook appelle la fonction de rappel avec un seul argument, qui est un objet AsyncResult . La fonction de rappel peut accéder à deux propriétés de l’objet AsyncResult : la value propriété, qui contient la réponse SOAP XML de l’opération EWS, et éventuellement, la asyncContext propriété, qui contient toutes les données passées en tant que userContext paramètre . En règle générale, la fonction de rappel analyse ensuite le code XML dans la réponse SOAP pour obtenir toutes les informations pertinentes et traite ces informations en conséquence.
Conseils pour l’analyse des réponses EWS
Lors de l’analyse d’une réponse SOAP à partir d’une opération EWS, notez les problèmes suivants dépendant du navigateur.
Spécifiez le préfixe d’un nom de balise lors de l’utilisation de la méthode getElementsByTagName DOM afin d’inclure la prise en charge des Explorer Internet et de la vue web Trident.
getElementsByTagName se comporte différemment selon le type de navigateur. Par exemple, une réponse EWS peut contenir le code XML suivant (mis en forme et abrégé à des fins d’affichage).
Utilisez la propriété textContent DOM pour obtenir le contenu d’une balise dans une réponse EWS, comme suit.
JavaScript
content = $.parseJSON(value.textContent);
D’autres propriétés telles que innerHTML peuvent ne pas fonctionner sur la vue web Trident (Internet Explorer) pour certaines balises dans une réponse EWS.
Exemple
L’exemple suivant appelle makeEwsRequestAsync pour utiliser l’opération GetItem pour obtenir l’objet d’un élément. Cet exemple inclut les trois fonctions suivantes.
getSubjectRequest : prend un ID d’élément comme entrée et retourne le CODE XML de la requête SOAP à appeler GetItem pour l’élément spécifié.
sendRequest : appelle getSubjectRequest pour obtenir la requête SOAP pour l’élément sélectionné, puis passe la requête SOAP et la fonction de rappel, callback, à makeEwsRequestAsync pour obtenir l’objet de l’élément spécifié.
callback : traite la réponse SOAP, qui inclut tout objet et d’autres informations sur l’élément spécifié.
JavaScript
functiongetSubjectRequest(id) {
// Return a GetItem operation request for the subject of the specified item. const result =
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="https://www.w3.org/2001/XMLSchema"' +
' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
' <soap:Header>' +
' <RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" />' +
' </soap:Header>' +
' <soap:Body>' +
' <GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">' +
' <ItemShape>' +
' <t:BaseShape>IdOnly</t:BaseShape>' +
' <t:AdditionalProperties>' +
' <t:FieldURI FieldURI="item:Subject"/>' +
' </t:AdditionalProperties>' +
' </ItemShape>' +
' <ItemIds><t:ItemId Id="' + id + '"/></ItemIds>' +
' </GetItem>' +
' </soap:Body>' +
'</soap:Envelope>';
return result;
}
functionsendRequest() {
// Create a local variable that contains the mailbox.const mailbox = Office.context.mailbox;
mailbox.makeEwsRequestAsync(getSubjectRequest(mailbox.item.itemId), callback);
}
functioncallback(asyncResult) {
const result = asyncResult.value;
const context = asyncResult.context;
// Process the returned response here.
}
Opérations EWS prises en charge par les compléments
Les compléments Outlook peuvent accéder à un sous-ensemble d’opérations disponibles dans EWS via la makeEwsRequestAsync méthode . Si vous n’êtes pas familiarisé avec les opérations EWS et comment utiliser la makeEwsRequestAsync méthode pour accéder à une opération, commencez par un exemple de requête SOAP pour personnaliser votre argument de données .
L’exemple suivant décrit comment utiliser la makeEwsRequestAsync méthode .
Dans le XML, remplacez les ID d’éléments et les attributs d’opération EWS par les valeurs appropriées.
Incluez la requête SOAP comme argument pour le paramètre de données de makeEwsRequestAsync.
Spécifiez une fonction de rappel et appelez makeEwsRequestAsync.
Dans la fonction de rappel, vérifiez les résultats de l’opération dans la réponse SOAP.
Utilisez les résultats de l’opération EWS en fonction de vos besoins.
Le tableau suivant répertorie les opérations EWS prises en charge par les compléments. Pour afficher des exemples de demandes et réponses SOAP, choisissez le lien correspondant à chaque opération. Pour plus d’informations sur les opérations EWS, voir Opérations EWS dans Exchange.
Déplace les messages électroniques vers le dossier Courrier indésirable, et ajoute ou supprime les expéditeurs des messages de la liste des expéditeurs bloqués.
Modifie les propriétés des éléments existants dans la banque d’informations Exchange.
Notes
Les éléments FAI (Folder Associated Information) ne peuvent pas être mis à jour (ou créés) à partir d’un complément. Ces messages masqués sont stockés dans un dossier et utilisés pour stocker divers paramètres et données auxiliaires. Si vous tentez d’utiliser l’opération UpdateItem, une erreur ErrorAccessDenied est générée : « L'annuaire d'entreprise n'est pas autorisé à mettre à jour ce type d'élément ». En guise d’alternative, vous pouvez utiliser l’API managée EWS pour mettre à jour ces éléments à partir d’un client Windows ou d’une application serveur. Soyez vigilant car les structures de données internes de type service peuvent être modifiées et sont susceptibles d’endommager votre solution.
Authentification et autorisation pour la méthode makeEwsRequestAsync
Lorsque vous utilisez la makeEwsRequestAsync méthode , la demande est authentifiée à l’aide des informations d’identification du compte de messagerie de l’utilisateur actuel. La makeEwsRequestAsync méthode gère les informations d’identification pour vous afin que vous n’ayez pas à fournir des informations d’identification d’authentification avec votre demande.
Notes
L’administrateur de serveur doit utiliser l’applet de commande New-WebServicesVirtualDirectory ou Set-WebServicesVirtualDirectory pour définir le paramètre trueOAuthAuthentication sur sur le répertoire EWS du serveur d’accès au client afin de permettre à la makeEwsRequestAsync méthode d’effectuer des requêtes EWS.
Pour utiliser la makeEwsRequestAsync méthode , votre complément doit demander l’autorisation de lecture/écriture de boîte aux lettres dans le manifeste. Le balisage varie en fonction du type de manifeste.
Manifeste du complément uniquement : définissez l’élément Permissions> sur<ReadWriteMailbox.
Manifeste unifié pour Microsoft 365 : définissez la propriété « name » d’un objet dans le tableau « authorization.permissions.resourceSpecific » sur « Mailbox.ReadWrite.User ».
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur Office Add-ins
Office Add-ins est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Démontrez que vous avez les compétences nécessaires pour tirer le meilleur parti d’Outlook 2019 en obtenant la certification Microsoft Office Specialist (MOS).