Anexar ou acrescentar conteúdo a uma mensagem ou corpo de compromisso ao enviar

Os recursos anexar ao enviar e acrescentar ao enviar permitem que o suplemento do Outlook insira conteúdo no corpo de uma mensagem ou compromisso quando o item de email for enviado. Esses recursos aumentam ainda mais a produtividade e a segurança dos usuários, permitindo que eles:

  • Adicione rótulos de confidencialidade e classificação às mensagens e compromissos para facilitar a identificação e organização dos itens.
  • Inserir avisos de isenção de responsabilidade para fins legais.
  • Adicionar cabeçalhos padronizados para fins de marketing e comunicação.

Neste passo a passo, você desenvolverá um suplemento que precede um cabeçalho e acrescenta um aviso de isenção de responsabilidade quando uma mensagem é enviada.

Observação

O suporte para o recurso append-on-send foi introduzido no conjunto de requisitos 1.9, enquanto o suporte para o recurso prepend-on-send foi introduzido no conjunto de requisitos 1.13. Consulte clientes e plataformas que dão suporte a esses conjuntos de requisitos.

Configurar seu ambiente

Conclua o início rápido do Outlook , que cria um projeto de suplemento com o gerador Yeoman para Suplementos do Office.

Configurar o manifesto

Para configurar o manifesto, selecione a guia para o tipo de manifesto que você usará.

Observação

Não há suporte para suplementos que usam o manifesto unificado para Microsoft 365 no Outlook no Mac. Estamos trabalhando duro para fornecer esse apoio. Enquanto isso, se sua base de clientes incluir usuários no Mac, você precisará criar uma versão do suplemento que use o manifesto somente do suplemento e dê suporte a ambos. Para obter mais informações, consulte Suporte para suplementos com o manifesto unificado para Microsoft 365.

Veja a seguir como configurar o manifesto unificado para habilitar os recursos preceder ao enviar e acrescentar ao enviar.

  1. Abra o arquivo manifest.json .

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

    • O "minVersion" conjunto de requisitos de Caixa de Correio está definido como "1.13", portanto, o suplemento não pode ser instalado em plataformas e versões do Office em que esse recurso não tem suporte.
    • O "id" do tempo de execução é definido como o nome descritivo, "function_command_runtime".
    • A "code.page" propriedade é definida como a URL do arquivo HTML sem interface do usuário que carregará o comando de função.
    • A "lifetime" propriedade é definida como "short", o que significa que o tempo de execução é iniciado quando o botão de comando da função é selecionado e é desligado quando a função é concluída. (Em certos casos raros, o runtime é desligado antes da conclusão do manipulador. Confira Runtimes em Suplementos do Office.)
    • Existem ações especificadas para executar as "prependHeaderOnSend" funções and "appendDisclaimerOnSend" . Você criará essas funções em uma etapa 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"
            },
            {
                "id": "appendDisclaimerOnSend",
                "type": "executeFunction"
            }
        ]
    }
    
  3. Adicione o objeto a seguir à "extensions.ribbons" matriz. Observe o seguinte sobre este código.

    • O "mailCompose" valor é adicionado à "contexts" matriz para exibir os botões prepend-on-send e append-on-send em uma janela de redação.
    • Os "controls" objetos criam e configuram os botões para as funções prepend-on-send e append-on-send . A "actionId" propriedade de cada objeto deve refletir o mesmo valor especificado na propriedade aplicável "actions.id" do "extensions.runtimes" objeto.
    {
        "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. "authorization.permissions.resourceSpecific" Na matriz, adicione o seguinte objeto. Certifique-se de que ele esteja separado dos outros objetos na matriz com uma vírgula.

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

Dica

  • Os recursos prepend-on-send e append-on-send devem ser ativados pelo usuário por meio de um painel de tarefas ou um botão de comando de função. Se quiser que o conteúdo seja anexado ou acrescentado ao envio sem uma ação adicional do usuário, você poderá implementar esses recursos em um suplemento de ativação baseado em eventos.
  • Para saber mais sobre manifestos para suplementos do Outlook, consulte Manifestos de Suplemento do Office.

Implementar o manipulador prepend-on-send

Nesta seção, você implementará o código JavaScript para anexar um exemplo de cabeçalho da empresa a um item de email quando ele for enviado.

  1. Navegue até a pasta ./src/commands do seu projeto e abra o arquivo commands.js .

  2. Insira a função a seguir no final do arquivo.

    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 manipulador append-on-send

Nesta seção, você implementará o código JavaScript para acrescentar um exemplo de aviso de isenção de responsabilidade da empresa a um item de email quando ele for enviado.

  1. No mesmo arquivocommands.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.

Registrar as funções JavaScript

  1. No mesmo arquivocommands.js , insira o seguinte após a appendDisclaimerOnSend função. Essas chamadas mapeiam o nome da função especificado no manifesto para sua contraparte JavaScript. A localização do nome da função no manifesto varia dependendo do tipo de manifesto que seu suplemento usa.
  • Manifesto somente do suplemento: o nome da função especificado no <FunctionName> elemento.

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

    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 você executar esse comando, o servidor Web local será iniciado se ainda não estiver em execução e seu suplemento será sideloaded.

    npm start
    

    Observação

    • Quando você usa o gerador Yeoman pela primeira vez para desenvolver um suplemento do Office, seu navegador padrão abre uma janela onde você será solicitado a entrar em sua conta do Microsoft 365. Se uma janela de entrada não for exibida e você encontrar um erro de sideload ou tempo limite de logon, execute atk auth login m365 antes de executar npm start novamente.

    • Se o suplemento não foi carregado automaticamente, siga as instruções em Fazer sideload de suplementos do Outlook para testar o sideload manual do suplemento no Outlook.

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

  3. (Opcional) Insira o texto no corpo da mensagem.

  4. Na faixa de opções ou no menu estouro, selecione Prefixar cabeçalho.

  5. Na faixa de opções ou no menu de estouro, selecione Adicionar aviso de isenção de responsabilidade.

  6. Envie a mensagem e abra-a na Caixa de Entrada ou na pasta Itens Enviados para exibir o conteúdo inserido.

    Um exemplo de uma mensagem enviada com o cabeçalho Contoso anexado e o aviso de isenção de responsabilidade anexado ao corpo.

    Dica

    Como o conteúdo só é anexado ou acrescentado depois que a mensagem é enviada, o remetente só poderá exibir o conteúdo adicionado de sua caixa de entrada ou da pasta Itens Enviados . Se você exigir que o remetente visualize o conteúdo adicionado antes do envio da mensagem, confira Inserir dados no corpo ao redigir um compromisso ou mensagem no Outlook.

  7. Quando você 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 você usou npm start, o comando a seguir também deve desinstalar o suplemento.

      npm stop
      
    • Se você carregou manualmente o suplemento, consulte Remover um suplemento com sideload.

Examinar o comportamento e as limitações do recurso

Ao implementar prepend-on-send e append-on-send em seu suplemento, lembre-se do seguinte.

  • Preceder ao enviar e acrescentar ao enviar são compatíveis apenas no modo de redação.

  • A cadeia de caracteres a ser anexada ou acrescentada não deve exceder 5.000 caracteres.

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

  • Qualquer formatação aplicada ao conteúdo anexado ou anexado não afeta o estilo do restante do corpo do item de email.

  • Prepend-on-send e append-on-send não podem ser implementados no mesmo suplemento que implementa o recurso on-send. Como alternativa, considere implementar Alertas Inteligentes .

  • Ao implementar Alertas Inteligentes no mesmo suplemento, as operações prepend-on-send e append-on-send ocorrem antes das OnMessageSend operações do manipulador de eventos and OnAppointmentSend .

  • Se vários suplementos ativos usarem prepend-on-send ou append-on-send, a ordem do conteúdo a ser inserido dependerá da ordem em que o suplemento foi executado. Para prepend-on-send, o conteúdo do suplemento que é executado por último aparece na parte superior do corpo do item de email antes do conteúdo prefixado anteriormente. Para append-on-send, o conteúdo do suplemento que é executado por último aparece na parte inferior do corpo do item de email após o conteúdo anexado anteriormente.

  • Há suporte para cenários de caixa de correio compartilhada e delegada, desde que o suplemento que implementa preceder ao enviar ou acrescentar ao enviar esteja habilitado na caixa de correio compartilhada ou na conta do proprietário.

Solucionar problemas do seu suplemento

Se você encontrar um erro ao implementar os recursos prepend-on-send e append-on-send, consulte a tabela a seguir para obter diretrizes.

Erro Descrição Resolução
DataExceedsMaximumSize O conteúdo a ser acrescentado ou anexado tem mais de 5.000 caracteres. Encurte a cadeia de caracteres que você passa para o data parâmetro de sua prependOnSendAsync chamada ou appendOnSendAsync .
InvalidFormatError A mensagem ou o corpo do compromisso está no formato de texto sem formatação, mas o coercionType método passado para o prependOnSendAsyncappendOnSendAsync ou está definido como Office.CoercionType.Html. Somente texto sem formatação pode ser inserido no corpo de texto sem formatação de uma mensagem ou compromisso. Para verificar o formato do item de email que está sendo composto, ligue Office.context.mailbox.item.body.getTypeAsynce passe o valor retornado para o seu prependOnSendAsync ou appendOnSendAsync ligue.

Confira também