Mettre à jour automatiquement votre signature lors du basculement entre des comptes Exchange
Article
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é.
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.
Accédez au tableau « authorization.permissions.resourceSpecific ». Dans l’objet tableau, remplacez la valeur de la propriété « name » par « MailboxItem.ReadWrite.User ». Le complément en a besoin pour pouvoir mettre à jour la signature d’un message.
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 classique 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 la nouvelle version d’Outlook sur Windows 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.
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.
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.
Pour activer le complément lorsque l’événement OnMessageFromChanged se produit, l’élément Runtimes et le point d’extension LaunchEvent doivent être configurés dans le VersionOverridesV1_1 nœud du manifeste.
En plus de l’événement OnMessageFromChanged , l’événement OnNewMessageCompose est également configuré dans le manifeste, de sorte qu’une signature est ajoutée à un message en cours de composition si une signature Outlook par défaut n’est pas déjà configurée sur le compte actuel.
Dans votre éditeur de code, ouvrez le projet de démarrage rapide.
Ouvrez le fichier manifest.xml situé à la racine de votre projet.
Sélectionnez l’intégralité <du nœud VersionOverrides> (y compris les balises d’ouverture et de fermeture), remplacez-le par le code XML suivant, puis enregistrez vos modifications.
XML
<VersionOverridesxmlns="http://schemas.microsoft.com/office/mailappversionoverrides"xsi:type="VersionOverridesV1_0"><VersionOverridesxmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1"xsi:type="VersionOverridesV1_1"><Requirements><bt:SetsDefaultMinVersion="1.13"><bt:SetName="Mailbox"/></bt:Sets></Requirements><Hosts><Hostxsi:type="MailHost"><Runtimes><!-- HTML file that references or contains inline JavaScript event handlers.
This is used by event-based activation add-ins in Outlook on the web and on Mac,
and in new Outlook on Windows. --><Runtimeresid="WebViewRuntime.Url"><!-- JavaScript file that contains the event handlers.
This is used by event-based activation add-ins in classic Outlook on Windows. --><Overridetype="javascript"resid="JSRuntime.Url"/></Runtime></Runtimes><DesktopFormFactor><FunctionFileresid="Commands.Url"/><ExtensionPointxsi:type="MessageComposeCommandSurface"><OfficeTabid="TabDefault"><Groupid="msgComposeGroup"><Labelresid="GroupLabel"/><Controlxsi:type="Button"id="msgComposeOpenPaneButton"><Labelresid="TaskpaneButton.Label"/><Supertip><Titleresid="TaskpaneButton.Label"/><Descriptionresid="TaskpaneButton.Tooltip"/></Supertip><Icon><bt:Imagesize="16"resid="Icon.16x16"/><bt:Imagesize="32"resid="Icon.32x32"/><bt:Imagesize="80"resid="Icon.80x80"/></Icon><Actionxsi:type="ShowTaskpane"><SourceLocationresid="Taskpane.Url"/></Action></Control><Controlxsi:type="Button"id="ActionButton"><Labelresid="ActionButton.Label"/><Supertip><Titleresid="ActionButton.Label"/><Descriptionresid="ActionButton.Tooltip"/></Supertip><Icon><bt:Imagesize="16"resid="Icon.16x16"/><bt:Imagesize="32"resid="Icon.32x32"/><bt:Imagesize="80"resid="Icon.80x80"/></Icon><Actionxsi:type="ExecuteFunction"><FunctionName>action</FunctionName></Action></Control></Group></OfficeTab></ExtensionPoint><!-- Configures event-based activation. --><ExtensionPointxsi:type="LaunchEvent"><LaunchEvents><LaunchEventType="OnNewMessageCompose"FunctionName="onNewMessageComposeHandler"/><LaunchEventType="OnMessageFromChanged"FunctionName="onMessageFromChangedHandler"/></LaunchEvents><!-- Identifies the runtime to be used (also referenced by the <Runtime> element). --><SourceLocationresid="WebViewRuntime.Url"/></ExtensionPoint></DesktopFormFactor></Host></Hosts><Resources><bt:Images><bt:Imageid="Icon.16x16"DefaultValue="https://localhost:3000/assets/icon-16.png"/><bt:Imageid="Icon.32x32"DefaultValue="https://localhost:3000/assets/icon-32.png"/><bt:Imageid="Icon.80x80"DefaultValue="https://localhost:3000/assets/icon-80.png"/></bt:Images><bt:Urls><bt:Urlid="Commands.Url"DefaultValue="https://localhost:3000/commands.html"/><bt:Urlid="Taskpane.Url"DefaultValue="https://localhost:3000/taskpane.html"/><bt:Urlid="JSRuntime.Url"DefaultValue="https://localhost:3000/launchevent.js"/><bt:Urlid="WebViewRuntime.Url"DefaultValue="https://localhost:3000/commands.html"/></bt:Urls><bt:ShortStrings><bt:Stringid="GroupLabel"DefaultValue="Contoso Add-in"/><bt:Stringid="TaskpaneButton.Label"DefaultValue="Show Taskpane"/><bt:Stringid="ActionButton.Label"DefaultValue="Perform an action"/></bt:ShortStrings><bt:LongStrings><bt:Stringid="TaskpaneButton.Tooltip"DefaultValue="Opens a pane displaying all available properties."/><bt:Stringid="ActionButton.Tooltip"DefaultValue="Perform an action when clicked."/></bt:LongStrings></Resources></VersionOverrides></VersionOverrides>
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é.
À partir du même projet de démarrage rapide, accédez au répertoire ./src , puis créez un dossier nommé launchevent.
Dans le dossier ./src/launchevent , créez un fichier nommé launchevent.js.
Ouvrez le fichier ./src/launchevent/launchevent.js dans votre éditeur de code et ajoutez le code JavaScript suivant.
JavaScript
/*
* 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.functiononNewMessageComposeHandler(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.functiononMessageFromChangedHandler(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.functionaddSignatureCallback(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 Outlook, remember to// map the event handler name specified in the manifest's LaunchEvent element (with the add-in only manifest)// or the "autoRunEvents.events.actionId" property (with the unified manifest for Microsoft 365)// to its JavaScript counterpart.
Office.actions.associate("onNewMessageComposeHandler", onNewMessageComposeHandler);
Office.actions.associate("onMessageFromChangedHandler", onMessageFromChangedHandler);
Important
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 s’exécutant dans Outlook classique 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
Dans le dossier ./src/commands , ouvrez commands.html.
Ajoutez le code suivant sous la balise de script existante.
Mettre à jour les paramètres de configuration webapck
Dans le répertoire racine du projet, ouvrez le fichier webpack.config.js .
Recherchez le plugins tableau dans l’objet config et ajoutez le nouvel objet suivant au début du tableau.
JavaScript
new CopyWebpackPlugin({
patterns: [
{
from: "./src/launchevent/launchevent.js",
to: "launchevent.js",
},
],
}),
Enregistrez vos modifications.
Essayez
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.
command line
npm run build
command line
npm start
Notes
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.
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éé.
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.
Lorsque vous souhaitez arrêter le serveur web local et désinstaller le complément, suivez les instructions applicables :
Pour arrêter le serveur, exécutez la commande suivante. Si vous avez utilisé npm start, la commande suivante doit également désinstaller le complément.
À 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 (nouveau et classique) et sur le web, 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.
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).