Anexar ou anexar conteúdo a uma mensagem ou corpo de compromisso durante o envio

As funcionalidades de pré-envio e acréscimo no envio permitem que o seu suplemento do Outlook insira conteúdo no corpo de uma mensagem ou compromisso quando o item de correio é enviado. Estas funcionalidades aumentam ainda mais a produtividade e a segurança dos seus utilizadores, permitindo-lhes:

  • Adicione etiquetas de confidencialidade e classificação às respetivas mensagens e compromissos para facilitar a identificação de itens e a organização.
  • Inserir exclusões de responsabilidade para fins legais.
  • Adicione cabeçalhos padronizados para fins de marketing e comunicação.

Nestas instruções, irá desenvolver um suplemento que prepara um cabeçalho e acrescenta uma exclusão de responsabilidade quando uma mensagem é enviada.

Observação

O suporte para a funcionalidade de acréscimo no envio foi introduzido no conjunto de requisitos 1.9, enquanto o suporte para a funcionalidade de pré-envio foi introduzido no conjunto de requisitos 1.13. Veja clientes e plataformas que suportam estes conjuntos de requisitos.

Configurar seu ambiente

Conclua o guia de introdução do Outlook , que cria um projeto de suplemento com o gerador Yeoman para Suplementos do Office.

Configurar o manifesto

Para configurar o manifesto, selecione o separador para o tipo de manifesto que irá utilizar.

O seguinte mostra como configurar o manifesto unificado para ativar as funcionalidades de pré-envio e de acréscimo no envio.

  1. Abra o ficheiro manifest.json .

  2. Adicione o seguinte objeto à matriz "extensions.runtimes". Observe o seguinte sobre este código.

    • A "minVersion" do conjunto de requisitos da Caixa de Correio está definida como "1.13", pelo que o suplemento não pode ser instalado em plataformas e versões do Office onde esta funcionalidade não é suportada.
    • O "ID" do runtime está definido como o nome descritivo, "function_command_runtime".
    • A propriedade "code.page" está definida como o URL do ficheiro HTML sem IU que irá carregar o comando da função.
    • A propriedade "lifetime" está definida como "abreviada", o que significa que o runtime é iniciado quando o botão de comando da função é selecionado e é encerrado quando a função é concluída. (Em determinados casos raros, o runtime é encerrado antes de o processador ser concluído. Consulte Runtimes nos Suplementos do Office.)
    • Existem ações especificadas para executar as funções "prependHeaderOnSend" e "appendDisclaimerOnSend". Irá criar estas funções num passo posterior.
    {
        "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. Adicione o seguinte objeto à matriz "extensions.ribbons". Observe o seguinte sobre este código.

    • O valor "mailCompose" é adicionado à matriz "contextos" para apresentar os botões de pré-envio e de acréscimo no envio numa janela de composição.
    • Os objetos "controlos" criam e configuram os botões para as funções de pré-envio e acréscimo no envio. A propriedade "actionId" de cada objeto tem de refletir o mesmo valor especificado na propriedade "actions.id" aplicável do objeto "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. Na matriz "authorization.permissions.resourceSpecific", adicione o seguinte objeto. Certifique-se de que está separado de outros objetos na matriz com uma vírgula.

    {
      "name": "Mailbox.AppendOnSend.User",
      "type": "Delegated"
    }
    
  5. Salve suas alterações.

Dica

  • As funcionalidades de pré-envio e de acréscimo no envio têm de ser ativadas pelo utilizador através de um painel de tarefas ou de um botão de comando de função. Se pretender que o conteúdo seja pré-anexado ou acrescentado no envio sem ação adicional do utilizador, pode implementar estas funcionalidades num suplemento de ativação baseado em eventos.
  • Para saber mais sobre manifestos para suplementos do Outlook, consulte Manifestos de suplementos do Office.

Implementar o processador de pré-end-on-send

Nesta secção, irá implementar o código JavaScript para preparar um cabeçalho de empresa de exemplo para um item de correio quando é enviado.

  1. Navegue para a pasta ./src/commands do projeto e abra o ficheiro commands.js .

  2. Insira a seguinte função no final do ficheiro.

    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. Salve suas alterações.

Implementar o processador de acréscimo no envio

Nesta secção, irá implementar o código JavaScript para acrescentar uma exclusão de responsabilidade da empresa de exemplo a um item de correio quando é enviado.

  1. No mesmo ficheiro commands.js , insira a seguinte função após a prependHeaderOnSend função.

    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. Salve suas alterações.

Registar as funções JavaScript

  1. No mesmo ficheiro commands.js , insira o seguinte após a appendDisclaimerOnSend função. Estas chamadas mapeiam o nome da função especificado no manifesto para o seu equivalente JavaScript. A localização do nome da função no manifesto varia consoante o tipo de manifesto utilizado pelo suplemento.
  • Manifesto apenas de suplemento: o nome da função especificado no <elemento FunctionName> .

  • Manifesto unificado para o Microsoft 365: o nome da função especificado na propriedade "id" dos objetos na matriz "extensions.runtimes.actions".

    Office.actions.associate("prependHeaderOnSend", prependHeaderOnSend);
    Office.actions.associate("appendDisclaimerOnSend", appendDisclaimerOnSend);
    
  1. Salve suas alterações.

Experimente

  1. Execute o seguinte comando no diretório raiz do seu projeto. Quando executar este comando, o servidor Web local será iniciado se ainda não estiver em execução e o suplemento será sideloaded.

    npm start
    

    Observação

    Se o suplemento não tiver sido carregado automaticamente em sideload, siga as instruções em Sideload Suplementos do Outlook para testar para fazer sideload manualmente do suplemento no Outlook.

  2. Crie uma nova mensagem e adicione-se à linha Para .

  3. (Opcional) Introduza texto no corpo da mensagem.

  4. No friso ou menu de conteúdo excedido, selecione Cabeçalho de pré-limite.

  5. No friso ou menu de capacidade excedida, selecione Adicionar exclusão de responsabilidade.

  6. Envie a mensagem e, em seguida, abra-a a partir da pasta Caixa de Entrada ou Itens Enviados para ver o conteúdo inserido.

    Uma amostra de uma mensagem enviada com o cabeçalho da Contoso pré-anexado e a exclusão de responsabilidade anexada ao corpo.

    Dica

    Uma vez que o conteúdo só é pré-anexado ou anexado depois de a mensagem ser enviada, o remetente só poderá ver o conteúdo adicionado a partir da respetiva pasta Caixa de Entrada ou Itens Enviados . Se precisar que o remetente veja o conteúdo adicionado antes de a mensagem ser enviada, consulte Inserir dados no corpo ao compor um compromisso ou mensagem no Outlook.

  7. Quando quiser parar o servidor Web local e desinstalar o suplemento, siga as instruções aplicáveis:

    • Para parar o servidor, execute o seguinte comando. Se tiver utilizado npm start, o seguinte comando também deve desinstalar o suplemento.

      npm stop
      
    • Se tiver carregado manualmente o suplemento em sideload, consulte Remover um suplemento sideloaded.

Rever o comportamento e as limitações das funcionalidades

À medida que implementa o pré-end-on-send e o acréscimo no seu suplemento, tenha em atenção o seguinte.

  • O pré-envio e o acréscimo no envio só são suportados no modo de composição.

  • A cadeia a ser precedida ou anexada não pode exceder os 5000 carateres.

  • O HTML não pode ser anexado ou anexado a um corpo de texto simples de uma mensagem ou compromisso. No entanto, o texto simples pode ser adicionado a um corpo formatado em HTML de uma mensagem ou compromisso.

  • Qualquer formatação aplicada a conteúdo pré-anexado ou acrescentado não afeta o estilo do resto do corpo do item de correio.

  • O pré-envio e o acréscimo no envio não podem ser implementados no mesmo suplemento que implementa a funcionalidade de envio. Em alternativa, considere implementar Alertas Inteligentes .

  • Ao implementar Alertas Inteligentes no mesmo suplemento, as operações de pré-envio e acréscimo no envio ocorrem antes das operações do OnMessageSend processador de eventos e OnAppointmentSend .

  • Se vários suplementos ativos utilizarem prepend-on-send ou append-on-send, a ordem dos conteúdos a inserir depende da ordem pela qual o suplemento foi executado. Para prepend-on-send, o conteúdo do suplemento que é executado pela última vez é apresentado na parte superior do corpo do item de correio antes do conteúdo previamente preparado. Para acrescentar ao envio, o conteúdo do suplemento que é executado pela última vez é apresentado na parte inferior do corpo do item de correio após o conteúdo anexado anteriormente.

  • Os cenários de caixa de correio delegada e partilhada são suportados desde que o suplemento que implementa o pré-envio ou o acréscimo no envio esteja ativado na caixa de correio partilhada ou na conta do proprietário.

Resolver problemas do suplemento

Se encontrar um erro ao implementar as funcionalidades prepend-on-send e append-on-send, consulte a tabela seguinte para obter orientações.

Erro Descrição Resolução
DataExceedsMaximumSize O conteúdo a acrescentar ou pré-anexar tem mais de 5000 carateres. Reduza a cadeia de carateres que transmite para o data parâmetro da sua prependOnSendAsync ou appendOnSendAsync chamada.
InvalidFormatError O corpo da mensagem ou compromisso está em formato de texto simples, mas o coercionType método transmitido para o prependOnSendAsync ou appendOnSendAsync está definido como Office.CoercionType.Html. Apenas o texto simples pode ser inserido num corpo de texto simples de uma mensagem ou compromisso. Para verificar o formato do item de correio que está a ser composto, chame Office.context.mailbox.item.body.getTypeAsynce, em seguida, transmita o respetivo valor devolvido para a sua prependOnSendAsync ou appendOnSendAsync chamada.

Confira também