Partager via


Ajouter ou ajouter du contenu à un message ou un corps de rendez-vous lors de l’envoi

Les fonctionnalités prepend-on-send et append-on-send permettent à votre complément Outlook d’insérer du contenu dans le corps d’un message ou d’un rendez-vous lors de l’envoi de l’élément de courrier. Ces fonctionnalités renforcent la productivité et la sécurité de vos utilisateurs en leur permettant d’effectuer les opérations suivantes :

  • Ajoutez des étiquettes de confidentialité et de classification à leurs messages et rendez-vous pour faciliter l’identification et l’organisation des éléments.
  • Insérer des clauses d’exclusion de responsabilité à des fins juridiques.
  • Ajoutez des en-têtes standardisés à des fins de marketing et de communication.

Dans cette procédure pas à pas, vous allez développer un complément qui ajoute un en-tête et ajoute une clause d’exclusion de responsabilité lorsqu’un message est envoyé.

Notes

La prise en charge de la fonctionnalité d’ajout sur envoi a été introduite dans l’ensemble de conditions requises 1.9, tandis que la prise en charge de la fonctionnalité prepend-on-send a été introduite dans l’ensemble de conditions requises 1.13. Consultez clients et plateformes qui prennent en charge ces ensembles de conditions requises.

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

Pour configurer le manifeste, sélectionnez l’onglet correspondant au type de manifeste que vous utiliserez.

L’exemple suivant montre comment configurer votre manifeste unifié pour activer les fonctionnalités prepend-on-send et append-on-send.

  1. Ouvrez le fichier manifest.json .

  2. Ajoutez l’objet suivant au tableau « extensions.runtimes ». Notez ce qui suit à propos de ce code.

    • La valeur « minVersion » de l’ensemble de conditions requises pour la boîte aux lettres est définie sur « 1.13 », de sorte que le complément ne peut pas être installé sur les plateformes et les versions d’Office où cette fonctionnalité n’est pas prise en charge.
    • Le « id » du runtime est défini sur le nom descriptif , « function_command_runtime ».
    • La propriété « code.page » est définie sur l’URL du fichier HTML sans interface utilisateur qui chargera la commande de fonction.
    • La propriété « lifetime » est définie sur « short », ce qui signifie que le runtime démarre lorsque le bouton de commande de fonction est sélectionné et s’arrête à la fin de la fonction. (Dans certains cas rares, le runtime s’arrête avant la fin du gestionnaire. Voir Runtimes dans les compléments Office.)
    • Des actions sont spécifiées pour exécuter les fonctions « prependHeaderOnSend » et « appendDisclaimerOnSend ». Vous allez créer ces fonctions dans une étape ultérieure.
    {
        "requirements": {
            "capabilities": [
                {
                    "name": "Mailbox",
                    "minVersion": "1.13"
                }
            ],
            "formFactors": [
                "desktop"
            ]
        },
        "id": "function_command_runtime",
        "type": "general",
        "code": {
            "page": "https://localhost:3000/commands.html"
        },
        "lifetime": "short",
        "actions": [
            {
                "id": "prependHeaderOnSend",
                "type": "executeFunction",
                "displayName": "prependHeaderOnSend"
            },
            {
                "id": "appendDisclaimerOnSend",
                "type": "executeFunction",
                "displayName": "appendDisclaimerOnSend"
            }
        ]
    }
    
  3. Ajoutez l’objet suivant au tableau « extensions.ribbons ». Notez ce qui suit à propos de ce code.

    • La valeur « mailCompose » est ajoutée au tableau « contexts » pour exposer les boutons prepend-on-send et append-on-send dans une fenêtre de composition.
    • Les objets « controls » créent et configurent les boutons des fonctions prepend-on-send et append-on-send. La propriété « actionId » de chaque objet doit refléter la même valeur spécifiée dans la propriété « actions.id » applicable de l’objet « extensions.runtimes ».
    {
        "contexts": [
            "mailCompose"
        ],
        "tabs": [
            {
                "builtInTabId": "TabDefault",
                "groups": [
                    {
                        "id": "msgComposeGroup",
                        "label": "Contoso Add-in",
                        "icons": [
                            {
                                "size": 16,
                                "url" "https://localhost:3000/assets/icon-16.png"
                            },
                            {
                                "size": 32,
                                "url" "https://localhost:3000/assets/icon-32.png"
                            },
                            {
                                "size": 80,
                                "url" "https://localhost:3000/assets/icon-80.png"
                            }
                        ],
                        "controls": [
                            {
                                "id": "PrependButton",
                                "type": "button",
                                "label": "Prepend header",
                                "icons": [
                                    {
                                        "size": 16,
                                        "url" "https://localhost:3000/assets/icon-16.png"
                                    },
                                    {
                                        "size": 32,
                                        "url" "https://localhost:3000/assets/icon-32.png"
                                    },
                                    {
                                        "size": 80,
                                        "url" "https://localhost:3000/assets/icon-80.png"
                                    }
                                ],
                                "supertip": {
                                    "title": "Prepend header on send",
                                    "description": "Prepend the Contoso header on send."
                                },
                                "actionId": "prependHeaderOnSend"
                            },
                            {
                                "id": "AppendButton",
                                "type": "button",
                                "label": "Add disclaimer",
                                "icons": [
                                    {
                                        "size": 16,
                                        "url" "https://localhost:3000/assets/icon-16.png"
                                    },
                                    {
                                        "size": 32,
                                        "url" "https://localhost:3000/assets/icon-32.png"
                                    },
                                    {
                                        "size": 80,
                                        "url" "https://localhost:3000/assets/icon-80.png"
                                    }
                                ],
                                "supertip": {
                                    "title": "Append disclaimer on send",
                                    "description": "Append the Contoso disclaimer on send."
                                },
                                "actionId": "appendDisclaimerOnSend"
                            }
                        ]
                    }
                ]
            }
        ]
    }
    
  4. Dans le tableau « authorization.permissions.resourceSpecific », ajoutez l’objet suivant. Assurez-vous qu’il est séparé des autres objets du tableau par une virgule.

    {
      "name": "Mailbox.AppendOnSend.User",
      "type": "Delegated"
    }
    
  5. Enregistrez vos modifications.

Conseil

  • Les fonctionnalités prepend-on-send et append-on-send doivent être activées par l’utilisateur via un bouton de commande de volet Office ou de fonction. Si vous souhaitez ajouter du contenu à l’envoi sans action supplémentaire de la part de l’utilisateur, vous pouvez implémenter ces fonctionnalités dans un complément d’activation basé sur les événements.
  • Pour en savoir plus sur les manifestes pour les compléments Outlook, voir Manifestes de complément Office.

Implémenter le gestionnaire prepend-on-send

Dans cette section, vous allez implémenter le code JavaScript pour ajouter un exemple d’en-tête d’entreprise à un élément de courrier lors de son envoi.

  1. Accédez au dossier ./src/commands de votre projet et ouvrez le fichier commands.js .

  2. Insérez la fonction suivante à la fin du fichier.

    function prependHeaderOnSend(event) {
      // It's recommended to call the getTypeAsync method and pass its returned value to the options.coercionType parameter of the prependOnSendAsync call.
      Office.context.mailbox.item.body.getTypeAsync(
        {
          asyncContext: event
        },
        (asyncResult) => {
          if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;
          }
    
          // Sets the header to be prepended to the body of the message on send.
          const bodyFormat = asyncResult.value;
          // Because of the various ways in which HTML text can be formatted, the content may render differently when it's prepended to the mail item body.
          // In this scenario, a <br> tag is added to the end of the HTML string to preserve its format.
          const header = '<div style="border:3px solid #000;padding:15px;"><h1 style="text-align:center;">Contoso Limited</h1></div><br>';
    
          Office.context.mailbox.item.body.prependOnSendAsync(
            header,
            {
              asyncContext: asyncResult.asyncContext,
              coercionType: bodyFormat
            },
            (asyncResult) => {
              if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                console.log(asyncResult.error.message);
                return;
              }
    
              console.log("The header will be prepended when the mail item is sent.");
              asyncResult.asyncContext.completed();
            }
          );
      });
    }
    
  3. Enregistrez vos modifications.

Implémenter le gestionnaire append-on-send

Dans cette section, vous allez implémenter le code JavaScript pour ajouter un exemple d’exclusion de responsabilité d’entreprise à un élément de courrier lors de son envoi.

  1. Dans le même fichier commands.js , insérez la fonction suivante après la prependHeaderOnSend fonction .

    function appendDisclaimerOnSend(event) { 
      // Calls the getTypeAsync method and passes its returned value to the options.coercionType parameter of the appendOnSendAsync call.
      Office.context.mailbox.item.body.getTypeAsync(
        {
          asyncContext: event
        }, 
        (asyncResult) => {
          if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;
        }
    
        // Sets the disclaimer to be appended to the body of the message on send.
        const bodyFormat = asyncResult.value;
        const disclaimer =
          '<p style = "color:blue"> <i>This and subsequent emails on the same topic are for discussion and information purposes only. Only those matters set out in a fully executed agreement are legally binding. This email may contain confidential information and should not be shared with any third party without the prior written agreement of Contoso. If you are not the intended recipient, take no action and contact the sender immediately.<br><br>Contoso Limited (company number 01624297) is a company registered in England and Wales whose registered office is at Contoso Campus, Thames Valley Park, Reading RG6 1WG</i></p>';  
    
        Office.context.mailbox.item.body.appendOnSendAsync(
          disclaimer,
          {
            asyncContext: asyncResult.asyncContext,
            coercionType: bodyFormat
          },
          (asyncResult) => {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
              console.log(asyncResult.error.message);
              return;
            }
    
            console.log("The disclaimer will be appended when the mail item is sent.");
            asyncResult.asyncContext.completed();
          }
        );
      });
    }
    
  2. Enregistrez vos modifications.

Inscrire les fonctions JavaScript

  1. Dans le même fichier commands.js , insérez le code suivant après la appendDisclaimerOnSend fonction . Ces appels mappent le nom de fonction spécifié dans le manifeste à son équivalent JavaScript. L’emplacement du nom de la fonction dans le manifeste varie en fonction du type de manifeste utilisé par votre complément.
  • Manifeste XML : nom de fonction spécifié dans l’élément <FunctionName> .

  • Manifeste unifié pour Microsoft 365 : nom de fonction spécifié dans la propriété « id » des objets du tableau « extensions.runtimes.actions ».

    Office.actions.associate("prependHeaderOnSend", prependHeaderOnSend);
    Office.actions.associate("appendDisclaimerOnSend", appendDisclaimerOnSend);
    
  1. Enregistrez vos modifications.

Essayez

  1. Exécutez la commande suivante dans le répertoire racine de votre projet. Lorsque vous exécutez cette commande, 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 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.

  2. Créez un message et ajoutez-vous à la ligne À .

  3. (Facultatif) Entrez du texte dans le corps du message.

  4. Dans le ruban ou le menu de dépassement, sélectionnez En-tête Ajouter.

  5. Dans le ruban ou le menu de dépassement, sélectionnez Ajouter une clause d’exclusion de responsabilité.

  6. Envoyez le message, puis ouvrez-le à partir de votre boîte de réception ou dossier Éléments envoyés pour afficher le contenu inséré.

    Exemple de message envoyé avec l’en-tête Contoso ajouté et l’exclusion de responsabilité ajoutée à son corps.

    Conseil

    Étant donné que le contenu n’est ajouté ou ajouté qu’une fois le message envoyé, l’expéditeur ne peut afficher le contenu ajouté qu’à partir de sa boîte de réception ou de son dossier Éléments envoyés . Si vous avez besoin que l’expéditeur affiche le contenu ajouté avant l’envoi du message, voir Insérer des données dans le corps lors de la composition d’un rendez-vous ou d’un message dans Outlook.

Passer en revue le comportement et les limitations des fonctionnalités

Lorsque vous implémentez prepend-on-send et append-on-send dans votre complément, gardez les points suivants à l’esprit.

  • Prepend-on-send et append-on-send sont uniquement pris en charge en mode composition.

  • La chaîne à ajouter ou ajouter ne doit pas dépasser 5 000 caractères.

  • Html ne peut pas être ajouté ou ajouté à un corps de texte brut d’un message ou d’un rendez-vous. Toutefois, le texte brut peut être ajouté à un corps au format HTML d’un message ou d’un rendez-vous.

  • Toute mise en forme appliquée au contenu ajouté ou ajouté n’affecte pas le style du reste du corps de l’élément de courrier.

  • Prepend-on-send et append-on-send ne peuvent pas être implémentés dans le même complément qui implémente la fonctionnalité d’envoi. En guise d’alternative, envisagez plutôt d’implémenter des alertes intelligentes .

  • Lors de l’implémentation d’alertes intelligentes dans le même complément, les opérations prepend-on-send et append-on-send se produisent avant les opérations de OnMessageSend gestionnaire d’événements et OnAppointmentSend .

  • Si plusieurs compléments actifs utilisent prepend-on-send ou append-on-send, l’ordre du contenu à insérer dépend de l’ordre dans lequel le complément s’est exécuté. Pour prepend-on-send, le contenu du complément qui s’exécute en dernier apparaît en haut du corps de l’élément de courrier avant le contenu précédemment ajouté. Pour append-on-send, le contenu du complément qui s’exécute en dernier apparaît en bas du corps de l’élément de courrier après le contenu précédemment ajouté.

  • Les scénarios de boîte aux lettres déléguée et partagée sont pris en charge tant que le complément qui implémente prepend-on-send ou append-on-send est activé sur la boîte aux lettres partagée ou le compte du propriétaire.

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

Si vous rencontrez une erreur lors de l’implémentation des fonctionnalités prepend-on-send et append-on-send, reportez-vous au tableau suivant pour obtenir des conseils.

Erreur Description Résolution
DataExceedsMaximumSize Le contenu à ajouter ou à ajouter est supérieur à 5 000 caractères. Raccourcissez la chaîne que vous passez au data paramètre de votre prependOnSendAsync appel ou .appendOnSendAsync
InvalidFormatError Le corps du message ou du rendez-vous est au format texte brut, mais le coercionType passé à la prependOnSendAsync méthode ou appendOnSendAsync est défini sur Office.CoercionType.Html. Seul le texte brut peut être inséré dans un corps de texte brut d’un message ou d’un rendez-vous. Pour vérifier le format de l’élément de courrier en cours de composition, appelez Office.context.mailbox.item.body.getTypeAsync, puis passez sa valeur retournée à votre prependOnSendAsync appel ou appendOnSendAsync .

Voir aussi