Mettre à jour automatiquement votre signature lors du basculement entre des comptes Exchange

L’application de la signature correcte aux messages lors de l’utilisation de plusieurs comptes Exchange est désormais facilitée par l’ajout des OnMessageFromChanged événements et OnAppointmentFromChanged à la fonctionnalité d’activation basée sur les événements . L’événement OnMessageFromChanged se produit lorsque le compte dans le champ De d’un message en cours de composition est modifié, tandis que l’événement OnAppointmentFromChanged se produit lorsque l’organisateur d’une réunion en cours de composition est modifié. Ces événements étendent davantage les fonctionnalités des compléments de signature et leur permettent d’effectuer les opérations suivantes :

  • Fournir aux utilisateurs la commodité d’appliquer des signatures personnalisées pour chacun de leurs comptes.
  • Permettre aux délégués de boîte aux lettres de gérer plus précisément et efficacement les messages sortants et les demandes de réunion à partir de plusieurs boîtes aux lettres.
  • Assurez-vous que les messages et rendez-vous des utilisateurs respectent les stratégies de communication et de marketing de leur organization.

Les sections suivantes vous guident tout au long du développement d’un complément basé sur des événements qui gère l’événement pour mettre à jour automatiquement la OnMessageFromChanged signature d’un message lorsque le compte de messagerie dans le champ De est modifié.

Remarque

Les OnMessageFromChanged événements et OnAppointmentFromChanged ont été introduits dans l’ensemble de conditions requises 1.13. Pour plus d’informations sur la prise en charge des clients pour ces événements, consultez Clients et plateformes pris en charge.

Clients et plateformes pris en charge

Les tableaux suivants répertorient les combinaisons client-serveur qui prennent en charge les OnMessageFromChanged événements et OnAppointmentFromChanged . Sélectionnez l’onglet correspondant à l’événement applicable.

Client Exchange Online Exchange 2019 en local (mise à jour cumulative 12 ou ultérieure) Exchange 2016 en local (mise à jour cumulative 22 ou ultérieure)
Fenêtres
Version 2304 (build 16327.20248) ou ultérieure
Pris en charge Pris en charge Pris en charge
Mac
Version 16.77.816.0 ou ultérieure
Pris en charge Non applicable Non applicable
Navigateur web (interface utilisateur moderne)

nouvel Outlook sur Windows (préversion)
Pris en charge Non applicable Non applicable
iOS Non applicable Non applicable Non applicable
Android Non applicable Non applicable Non applicable

Configuration requise

Pour tester la procédure pas à pas, vous devez disposer d’au moins deux comptes Exchange.

Configuration de votre environnement

Suivez le guide de démarrage rapide Outlook, qui crée un projet de complément avec le générateur Yeoman pour les compléments Office.

Configurer le manifeste

  1. Ouvrez le fichier manifest.json .

  2. Ajoutez l’objet suivant au tableau « extensions.runtimes ». Notez les points suivants concernant ce balisage.

    • La « minVersion » de l’ensemble de conditions requises mailbox est configurée comme « 1.13 », car il s’agit de la version la plus basse de l’ensemble de conditions requises qui prend en charge l’événement OnMessageFromChanged . Pour plus d’informations, consultez le tableau « Événements pris en charge » dans Configurer votre complément Outlook pour l’activation basée sur les événements.

    • L'« id » du runtime est défini sur un nom descriptif, « autorun_runtime ».

    • La propriété « code » a une propriété « page » enfant définie sur un fichier HTML et une propriété « script » enfant définie sur un fichier JavaScript. Vous allez créer ou modifier ces fichiers dans les étapes ultérieures. Office utilise l’une de ces valeurs en fonction de la plateforme.

      • Outlook sur Windows exécute le gestionnaire d’événements dans un runtime JavaScript uniquement, qui charge directement un fichier JavaScript.
      • Outlook sur le web et sur Mac, et outlook sur Windows (préversion) exécutent le gestionnaire dans un runtime de navigateur, qui charge un fichier HTML. Le fichier HTML contient une <script> balise qui charge ensuite le fichier JavaScript.

      Pour plus d’informations, voir Runtimes dans les compléments Office.

    • La propriété « lifetime » est définie sur « short ». Cela signifie que le runtime démarre lorsque l’événement se produit et s’arrête lorsque le gestionnaire se termine.

    • Il existe des « actions » pour exécuter des gestionnaires pour les OnMessageFromChanged événements et OnNewMessageCompose . Vous allez créer les gestionnaires dans une étape ultérieure.

    {
        "requirements": {
            "capabilities": [
                {
                    "name": "Mailbox",
                    "minVersion": "1.13"
                }
            ]
        },
        "id": "autorun_runtime",
        "type": "general",
        "code": {
            "page": "https://localhost:3000/commands.html",
            "script": "https://localhost:3000/launchevent.js"
        },
        "lifetime": "short",
        "actions": [
            {
                "id": "onMessageFromChangedHandler",
                "type": "executeFunction",
                "displayName": "onMessageFromChangedHandler"
            },
            {
                "id": "onNewMessageComposeHandler",
                "type": "executeFunction",
                "displayName": "onNewMessageComposeHandler"
            }
        ]
    }
    
  3. Ajoutez un tableau « autoRunEvents » en tant que propriété de l’objet dans le tableau « extensions ». Le tableau « autoRunEvents » contient un objet avec les propriétés clés suivantes.

    • La propriété « events » affecte des gestionnaires aux OnMessageFromChanged événements et OnNewMessageCompose . Pour plus d’informations sur les noms d’événements utilisés dans le manifeste unifié, consultez le tableau « Événements pris en charge » dans Configurer votre complément Outlook pour l’activation basée sur les événements.
    • Le nom de fonction fourni dans « actionId » doit correspondre à la propriété « id » de son objet correspondant dans le tableau « actions » configuré précédemment.
    "autoRunEvents": [
        {
            "requirements": {
                "capabilities": [
                    {
                        "name": "Mailbox",
                        "minVersion": "1.13"
                    }
                ],
                "scopes": [
                    "mail"
                ]
            },
            "events": [
                {
                    "type": "messageFromChanged",
                    "actionId": "onMessageFromChangedHandler"
                },
                {
                    "type": "newMessageComposeCreated",
                    "actionId": "onNewMessageComposeHandler"
                }
            ]
        }
    ]
    

Conseil

Implémenter les gestionnaires d’événements

Les gestionnaires d’événements doivent être configurés pour les OnNewMessageCompose événements et OnMessageFromChanged . La onNewMessageComposeHandler fonction ajoute une signature à un message nouvellement créé si un message par défaut n’est pas déjà configuré sur le compte actuel. Lorsque le compte dans le champ De est modifié, la onMessageFromChangedHandler fonction met à jour la signature en fonction du compte nouvellement sélectionné.

  1. À partir du même projet de démarrage rapide, accédez au répertoire ./src , puis créez un dossier nommé launchevent.

  2. Dans le dossier ./src/launchevent , créez un fichier nommé launchevent.js.

  3. Ouvrez le fichier ./src/launchevent/launchevent.js dans votre éditeur de code et ajoutez le code JavaScript suivant.

    /*
     * Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
     * See LICENSE in the project root for license information.
     */
    
    // The OnNewMessageCompose event handler that adds a signature to a new message.
    function onNewMessageComposeHandler(event) {
        const item = Office.context.mailbox.item;
    
        // Check if a default Outlook signature is already configured.
        item.isClientSignatureEnabledAsync({ asyncContext: event }, (result) => {
            if (result.status === Office.AsyncResultStatus.Failed) {
                console.log(result.error.message);
                return;
            }
    
            // Add a signature if there's no default Outlook signature configured.
            if (result.value === false) {
                item.body.setSignatureAsync(
                    "<i>This is a sample signature.</i>",
                    { asyncContext: result.asyncContext, coercionType: Office.CoercionType.Html },
                    addSignatureCallback
                );
            }
        });
    }
    
    // The OnMessageFromChanged event handler that updates the signature when the email address in the From field is changed.
    function onMessageFromChangedHandler(event) {
        const item = Office.context.mailbox.item;
        const signatureIcon =
        "iVBORw0KGgoAAAANSUhEUgAAACcAAAAnCAMAAAC7faEHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAzUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKMFRskAAAAQdFJOUwAQIDBAUGBwgI+fr7/P3+8jGoKKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABT0lEQVQ4T7XT2ZalIAwF0DAJhMH+/6+tJOQqot6X6joPiouNBo3w9/Hd6+hrYnUt6vhLcjEAJevVW0zJxABSlcunhERpjY+UKoNN5+ZgDGu2onNz0OngjP2FM1VdyBW1LtvGeYrBLs7U5I1PTXZt+zifcS3Icw2GcS3vxRY3Vn/iqx31hUyTnV515kdTfbaNhZLI30AceqDiIo4tyKEmJpKdP5M4um+nUwfDWxAXdzqMNKQ14jLdL5ntXzxcRF440mhS6yu882Kxa30RZcUIjTCJg7lscsR4VsMjfX9Q0Vuv/Wd3YosD1J4LuSRtaL7bzXGN1wx2cytUdncDuhA3fu6HPTiCvpQUIjZ3sCcHVbvLtbNTHlysx2w9/s27m9gEb+7CTri6hR1wcTf2gVf3wBRe3CMbcHYvTODkXhnD0+178K/pZ9+n/C1ru/2HAPwAo7YM1X4+tLMAAAAASUVORK5CYII=";
    
        // Get the currently selected From account.
        item.from.getAsync({ asyncContext: event }, (result) => {
            if (result.status === Office.AsyncResultStatus.Failed) {
                console.log(result.error.message);
                return;
            }
    
            // Create a signature based on the currently selected From account.
            const name = result.value.displayName;
            const options = { asyncContext: { event: result.asyncContext, name: name }, isInline: true };
            item.addFileAttachmentFromBase64Async(signatureIcon, "signatureIcon.png", options, (result) => {
                if (result.status === Office.AsyncResultStatus.Failed) {
                    console.log(result.error.message);
                    return;
                }
    
                // Add the created signature to the mail item.
                const signature = "<img src='cid:signatureIcon.png'>" + result.asyncContext.name;
                item.body.setSignatureAsync(
                    signature,
                    { asyncContext: result.asyncContext.event, coercionType: Office.CoercionType.Html },
                    addSignatureCallback
                );
            });
        });
    }
    
    // Callback function to add a signature to the mail item.
    function addSignatureCallback(result) {
        if (result.status === Office.AsyncResultStatus.Failed) {
            console.log(result.error.message);
            return;
        }
    
        console.log("Successfully added signature.");
        result.asyncContext.completed();
    }
    
    // IMPORTANT: To ensure your add-in is supported in the Outlook client on Windows, remember to 
    // map the event handler name specified in the manifest's LaunchEvent element to its JavaScript counterpart.
    if (Office.context.platform === Office.PlatformType.PC || Office.context.platform == null) {
        Office.actions.associate("onNewMessageComposeHandler", onNewMessageComposeHandler);
        Office.actions.associate("onMessageFromChangedHandler", onMessageFromChangedHandler);
    }
    

Importante

Windows : À l’heure actuelle, les importations ne sont pas prises en charge dans le fichier JavaScript dans lequel vous implémentez la gestion de l’activation basée sur les événements.

Conseil

Les compléments basés sur les événements exécutés dans Outlook sur Windows n’exécutent pas de code inclus dans les Office.onReady() fonctions et Office.initialize . Nous vous recommandons d’ajouter votre logique de démarrage de complément, par exemple vérifier la version d’Outlook de l’utilisateur, à vos gestionnaires d’événements à la place.

Mettre à jour le fichier HTML des commandes

  1. Dans le dossier ./src/commands , ouvrez commands.html.

  2. Ajoutez le code suivant sous la balise de script existante.

    <script type="text/javascript" src="../launchevent/launchevent.js"></script>
    
  3. Enregistrez vos modifications.

Mettre à jour les paramètres de configuration webapck

  1. Dans le répertoire racine du projet, ouvrez le fichier webpack.config.js .

  2. Recherchez le plugins tableau dans l’objet config et ajoutez le nouvel objet suivant au début du tableau.

    new CopyWebpackPlugin({
      patterns: [
        {
          from: "./src/launchevent/launchevent.js",
          to: "launchevent.js",
        },
      ],
    }),
    
  3. Enregistrez vos modifications.

Essayez

  1. Exécutez les commandes suivantes dans le répertoire racine de votre projet. Lorsque vous exécutez npm start, le serveur web local démarre (s’il n’est pas déjà en cours d’exécution) et votre complément est chargé de manière indépendante.

    npm run build
    
    npm start
    

    Remarque

    Si votre complément n’a pas été automatiquement chargé de manière indépendante, suivez les instructions fournies dans Charger une version test des compléments Outlook pour charger manuellement une version test du complément dans Outlook.

  2. Dans votre client Outlook préféré, créez un message. Si aucune signature Outlook par défaut n’est configurée, le complément en ajoute une au message nouvellement créé.

    Exemple de signature ajouté à un message nouvellement composé lorsqu’une signature Outlook par défaut n’est pas configurée sur le compte.

  3. Activez le champ De , le cas échéant. Pour obtenir des conseils sur la façon de l’activer, consultez la section « Pourquoi le bouton De est-il manquant ? » dans Modifier le compte utilisé pour envoyer des messages électroniques.

  4. Sélectionnez De, puis choisissez un autre compte Exchange. Vous pouvez également entrer manuellement l’adresse e-mail Exchange en sélectionnant À partir>d’une autre adresse Email. Une signature mise à jour est ajoutée au message, en remplaçant la signature précédente.

    Exemple de signature mise à jour avec un logo lorsque le compte dans le champ De est modifié.

Résoudre les problèmes de votre complément

Pour obtenir des conseils sur la façon de résoudre les problèmes de votre complément d’activation basée sur les événements, consultez Résoudre les problèmes de compléments basés sur les événements et la création de rapports de courrier indésirable.

Déployer sur les utilisateurs

À l’instar des autres compléments basés sur les événements, les compléments qui utilisent les événements et OnAppointmentFromChanged doivent être déployés par l’administrateur OnMessageFromChanged d’un organization. Pour obtenir des conseils sur le déploiement de votre complément via le Centre d'administration Microsoft 365, consultez la section « Déployer sur les utilisateurs » de Configurer votre complément Outlook pour l’activation basée sur les événements.

Comportement et limitations des événements

Étant donné que les OnMessageFromChanged événements et OnAppointmentFromChanged sont pris en charge par le biais de la fonctionnalité d’activation basée sur les événements, le même comportement et les mêmes limitations s’appliquent aux compléments qui s’activent à la suite de cet événement. Pour obtenir une description détaillée, consultez Comportement et limitations de l’activation basée sur les événements.

En plus de ces caractéristiques, les aspects suivants s’appliquent également lorsqu’un complément s’active sur ces événements.

  • L’événement OnMessageFromChanged est pris en charge uniquement en mode de composition de message, tandis que l’événement OnAppointmentFromChanged est uniquement pris en charge en mode de composition de rendez-vous.
  • Dans Outlook sur Windows, seul l’événement OnMessageFromChanged est pris en charge.
  • Les OnMessageFromChanged événements et OnAppointmentFromChanged prennent uniquement en charge les comptes Exchange. Dans les messages en cours de composition, le compte Exchange est sélectionné dans la liste déroulante Du champ ou entré manuellement dans le champ. Dans les rendez-vous en cours de composition, le compte Exchange est sélectionné dans la liste déroulante du champ organisateur. Si un utilisateur bascule vers un compte non-Exchange dans le champ De ou organisateur, le client Outlook efface automatiquement la signature définie par le compte sélectionné précédemment.
  • Les scénarios de boîte aux lettres déléguée et partagée sont pris en charge.
  • L’événement OnAppointmentFromChanged n’est pas pris en charge dans les calendriers de groupe Microsoft 365. Si un utilisateur passe de son compte Exchange à un compte de calendrier de groupe Microsoft 365 dans le champ organisateur, le client Outlook efface automatiquement la signature définie par le compte Exchange.
  • Lorsque vous basculez vers un autre compte Exchange dans le champ De ou organisateur, les compléments du compte précédemment sélectionné, le cas échéant, sont arrêtés et les compléments associés au compte nouvellement sélectionné sont chargés avant le lancement de l’événement OnMessageFromChanged ou OnAppointmentFromChanged .
  • Email alias de compte sont pris en charge. Lorsqu’un alias pour le compte actif est sélectionné dans le champ De ou organisateur, l’événement OnMessageFromChanged ou OnAppointmentFromChanged se produit sans recharger les compléments du compte.
  • Lorsque la liste déroulante des champs De ou organisateur est ouverte par erreur ou que le même compte qui apparaît dans le champ De ou organisateur est réélectionné, l’événement OnMessageFromChanged ou OnAppointmentFromChanged se produit, mais les compléments du compte ne sont pas arrêtés ou rechargés.

Voir aussi