Compartilhar via


Atualizar automaticamente a sua assinatura ao alternar entre contas do Exchange

A aplicação da assinatura correta às mensagens ao utilizar múltiplas contas do Exchange é agora facilitada com a adição dos OnMessageFromChanged eventos e OnAppointmentFromChanged à funcionalidade de ativação baseada em eventos . O OnMessageFromChanged evento ocorre quando a conta no campo De de de uma mensagem a ser composta é alterada, enquanto o OnAppointmentFromChanged evento ocorre quando o organizador de uma reunião que está a ser composta é alterado. Estes eventos expandem ainda mais as capacidades dos suplementos de assinatura e permitem-lhes:

  • Forneça aos utilizadores a conveniência de aplicar assinaturas personalizadas para cada uma das respetivas contas.
  • Permitir que os delegados da caixa de correio giram mensagens e pedidos de reunião de forma mais precisa e eficiente a partir de várias caixas de correio.
  • Certifique-se de que as mensagens e compromissos dos utilizadores cumprem as políticas de comunicação e marketing da organização.

As secções seguintes explicam como desenvolver um suplemento baseado em eventos que processa o OnMessageFromChanged evento para atualizar automaticamente a assinatura de uma mensagem quando a conta de correio no campo De é alterada.

Observação

Os OnMessageFromChanged eventos e OnAppointmentFromChanged foram introduzidos no conjunto de requisitos 1.13. Para obter informações sobre o suporte do cliente para estes eventos, veja Supported clients and platforms (Clientes e plataformas suportados).

Clientes e plataformas suportados

As tabelas seguintes listam combinações cliente-servidor que suportam os OnMessageFromChanged eventos e OnAppointmentFromChanged . Selecione o separador do evento aplicável.

Cliente Exchange Online Exchange Server Subscription Edition (SE) Exchange 2019 no local (Atualização Cumulativa 12 ou posterior) Exchange 2016 no local (Atualização Cumulativa 22 ou posterior)
Browser (IU moderna)

novo Outlook no Windows
Com suporte Não aplicável Não aplicável Não aplicável
Windows (clássico)
Versão 2304 (Compilação 16327.20248) ou posterior
Com suporte Com suporte Com suporte Com suporte
Mac
Versão 16.77 (23081600) ou posterior
Com suporte Não aplicável Não aplicável Não aplicável
iOS
Versão 4.2502.0
Com suporte Não aplicável Não aplicável Não aplicável
Android
Versão 4.2502.0
Com suporte Não aplicável Não aplicável Não aplicável

Pré-requisitos

Para testar as instruções, tem de ter, pelo menos, duas contas do Exchange.

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

Observação

O OnMessageFromChanged evento não está atualmente disponível com o manifesto unificado para o Microsoft 365 no Outlook na Web e o novo Outlook no Windows. Para processar estes eventos, implemente um manifesto apenas de suplemento. Para obter informações sobre os tipos de manifestos, consulte Manifesto de Suplementos do Office.

Observação

Os suplementos que utilizam o manifesto unificado para o Microsoft 365 não são suportados diretamente no Outlook para Mac e em dispositivos móveis. Para executar este tipo de suplemento no Mac e em plataformas móveis, o suplemento tem primeiro de ser publicado no Microsoft Marketplace e, em seguida, implementado no Centro de Administração Microsoft 365. Para obter mais informações, consulte a secção "Suporte de cliente e plataforma" dos Suplementos do Office com o manifesto de aplicação unificada para o Microsoft 365.

  1. Abra o ficheiro manifest.json .

  2. Navegue para a "authorization.permissions.resourceSpecific" matriz. No objeto de matriz, substitua o valor da "name" propriedade por "MailboxItem.ReadWrite.User". Isto é necessário para que o suplemento possa atualizar a assinatura de uma mensagem.

    ...
    "authorization": {
        "permissions": {
            "resourceSpecific": [
                {
                    "name": "MailboxItem.ReadWrite.User",
                    "type": "Delegated"
                }
            ]
        }
    },
    ...
    
  3. Adicione o objeto a seguir à "extensions.runtimes" matriz. Observe o seguinte sobre esta marcação.

    • O "minVersion" do conjunto de requisitos da Caixa de Correio está configurado porque "1.13" esta é a versão mais baixa do conjunto de requisitos que suporta o OnMessageFromChanged evento. Para obter mais informações, consulte a tabela "Eventos suportados" em Ativar suplementos com eventos.

    • O "id" do runtime está definido como um nome descritivo, "autorun_runtime".

    • A "code" propriedade tem uma propriedade subordinada "page" definida para um ficheiro HTML e uma propriedade subordinada "script" definida como um ficheiro JavaScript. Irá criar ou editar estes ficheiros em passos posteriores. O Office utiliza um destes valores consoante a plataforma.

      • O Outlook clássico no Windows executa o processador de eventos num runtime apenas javaScript, que carrega diretamente um ficheiro JavaScript.
      • Outlook na Web e no Mac e o novo Outlook no Windows executam o processador num runtime do browser, que carrega um ficheiro HTML. O ficheiro HTML contém uma <script> etiqueta que, em seguida, carrega o ficheiro JavaScript.

      Para obter mais informações, consulte Runtimes nos Suplementos do Office.

    • A propriedade "lifetime" está definida como "short". Isto significa que o runtime é iniciado quando o evento ocorre e é encerrado quando o processador é concluído.

    • Existem "actions" processadores para os OnMessageFromChanged eventos e OnNewMessageCompose . Irá criar os processadores num passo posterior.

    {
        "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"
            }
        ]
    }
    
  4. Adicione uma "autoRunEvents" matriz como uma propriedade do objeto na "extensions" matriz. A "autoRunEvents" matriz contém um objeto com as seguintes propriedades de chave.

    • A "events" propriedade atribui processadores aos OnMessageFromChanged eventos e OnNewMessageCompose . Para obter informações sobre os nomes de eventos utilizados no manifesto unificado, veja a tabela "Eventos suportados" em Ativar suplementos com eventos.
    • O nome da função fornecido em "actionId" tem de corresponder à "id" propriedade do objeto correspondente na "actions" matriz configurada anteriormente.
    "autoRunEvents": [
        {
            "requirements": {
                "capabilities": [
                    {
                        "name": "Mailbox",
                        "minVersion": "1.13"
                    }
                ],
                "scopes": [
                    "mail"
                ]
            },
            "events": [
                {
                    "type": "messageFromChanged",
                    "actionId": "onMessageFromChangedHandler"
                },
                {
                    "type": "newMessageComposeCreated",
                    "actionId": "onNewMessageComposeHandler"
                }
            ]
        }
    ]
    

Dica

Implementar os processadores de eventos

Os processadores de eventos têm de ser configurados para os OnNewMessageCompose eventos e OnMessageFromChanged . A onNewMessageComposeHandler função adiciona uma assinatura a uma mensagem recentemente criada se uma predefinição ainda não estiver configurada na conta atual. Quando a conta no campo De é alterada, a onMessageFromChangedHandler função atualiza a assinatura com base nesta conta recentemente selecionada.

  1. A partir do mesmo projeto de início rápido, navegue para o diretório ./src e, em seguida, crie uma nova pasta com o nome launchevent.

  2. Na pasta ./src/launchevent , crie um novo ficheiro com o nome launchevent.js.

  3. Abra o ficheiro ./src/launchevent/launchevent.js no editor de código e adicione o seguinte código 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.
    function onNewMessageComposeHandler(event) {
        const platform = Office.context.platform;
        const signature = "<i>This is a sample signature.</i>";
    
        // On supported platforms, check if a default Outlook signature is already configured.
        if (platform !== Office.PlatformType.Android && platform !== Office.PlatformType.iOS) {
            Office.context.mailbox.item.isClientSignatureEnabledAsync({ asyncContext: { event: event, signature: signature } }, (result) => {
                if (result.status === Office.AsyncResultStatus.Failed) {
                    console.log(result.error.message);
                    return;
                }
    
                // Add a signature if there's no default Outlook signature configured.
                const signatureEnabled = result.value;
                if (signatureEnabled === false) {
                    const event = result.asyncContext.event;
                    const signature = result.asyncContext.signature;
                    setSignature(signature, event);
                }
            });
        } else {
            setSignature(signature, event);
        }
    }
    
    // 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;
                const event = result.asyncContext.event;
                setSignature(signature, event);
            });
        });
    }
    
    // Sets the custom signature and adds it to the mail item.
    function setSignature(signature, event) {
        Office.context.mailbox.item.body.setSignatureAsync(
            signature,
            { asyncContext: event, coercionType: Office.CoercionType.Html },
            (result) => {
                if (result.status === Office.AsyncResultStatus.Failed) {
                    console.log(result.error.message);
                    return;
                }
    
                console.log("Successfully added signature.");
                const event = result.asyncContext;
                event.completed();
            }
        );
    }
    
    // IMPORTANT: To ensure your add-in is supported in Outlook, remember to
    // map the event handler name specified in the manifest to its JavaScript counterpart.
    Office.actions.associate("onNewMessageComposeHandler", onNewMessageComposeHandler);
    Office.actions.associate("onMessageFromChangedHandler", onMessageFromChangedHandler);
    

Importante

  • No Outlook clássico no Windows, as importações não são suportadas no ficheiro JavaScript onde implementa o processamento da ativação baseada em eventos.
  • No Outlook clássico no Windows, quando a função JavaScript especificada no manifesto para processar uma execução de eventos, o código no Office.onReady() e Office.initialize não é executado. Recomendamos que adicione qualquer lógica de arranque necessária aos processadores de eventos, como verificar a versão do Outlook do utilizador, aos processadores de eventos.
  • Para garantir que o suplemento é executado conforme esperado quando ocorre um evento, chame Office.actions.associate no ficheiro JavaScript onde os processadores são implementados. Esta ação mapeia o nome do processador de eventos especificado no manifesto para o seu equivalente JavaScript. A localização do nome do processador no manifesto difere consoante o tipo de manifesto utilizado pelo suplemento.
    • Manifesto unificado para o Microsoft 365: o valor especificado na "actionId" propriedade do objeto aplicável "autoRunEvents.events" .
    • Manifesto apenas de suplemento: o nome da função especificado no elemento LaunchEvent aplicável.

Atualizar o ficheiro HTML dos comandos

  1. Na pasta ./src/commands , abra commands.html.

  2. Adicione o seguinte código abaixo da etiqueta de script existente.

    <script type="text/javascript" src="../launchevent/launchevent.js"></script>
    
  3. Salve suas alterações.

Atualizar as configurações webpack config

  1. No diretório de raiz do projeto, abra o ficheiro webpack.config.js .

  2. Localize a plugins matriz no config objeto e adicione o seguinte novo objeto ao início da matriz.

    new CopyWebpackPlugin({
      patterns: [
        {
          from: "./src/launchevent/launchevent.js",
          to: "launchevent.js",
        },
      ],
    }),
    
  3. Salve suas alterações.

Experimente

  1. Execute os seguintes comandos no diretório de raiz do projeto. Quando executa npm starto , o servidor Web local será iniciado (se ainda não estiver em execução) e o suplemento será sideloaded.

    npm run build
    
    npm start
    

    Observação

    • Quando utiliza o gerador Yeoman pela primeira vez para desenvolver um Suplemento do Office, o seu browser predefinido abre uma janela onde lhe será pedido para iniciar sessão na sua conta do Microsoft 365. Se não for apresentada uma janela de início de sessão e encontrar um erro de tempo limite de sideload ou início de sessão, execute atk auth login m365 antes de executar npm start novamente.

    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. No seu cliente do Outlook preferido, crie uma nova mensagem. Se não tiver uma assinatura predefinida do Outlook configurada, o suplemento adiciona uma à mensagem criada recentemente. No Outlook em dispositivos móveis, o suplemento adiciona uma assinatura de exemplo mesmo que tenha uma assinatura predefinida configurada.

    Uma assinatura de exemplo adicionada a uma mensagem recentemente composta quando uma assinatura predefinida do Outlook não está configurada na conta.

  3. Ative o campo De , se aplicável. Para obter orientações sobre como a ativar, consulte a secção "Por que motivo falta o botão De?" em Alterar a conta utilizada para enviar mensagens de e-mail.

  4. Selecione De e, em seguida, escolha uma conta do Exchange diferente. Em alternativa, introduza manualmente o endereço de e-mail do Exchange ao selecionar De>Outro Endereço Email. É adicionada uma assinatura atualizada à mensagem, substituindo a anterior.

    Um exemplo de uma assinatura atualizada com um logótipo quando a conta no campo De é alterada.

  5. 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.

Resolver problemas do suplemento

Para obter orientações sobre como resolver problemas com o suplemento de ativação baseada em eventos, veja Resolver problemas de suplementos baseados em eventos e relatórios de spam.

Implementar em utilizadores

À semelhança de outros suplementos baseados em eventos, os suplementos que utilizam os OnMessageFromChanged eventos e OnAppointmentFromChanged têm de ser implementados pelo administrador de uma organização. Para obter orientações sobre como implementar o suplemento através do Centro de administração do Microsoft 365, consulte a secção "Implementar o suplemento" de Ativar suplementos com eventos.

Comportamento e limitações de eventos

Uma vez que os OnMessageFromChanged eventos e OnAppointmentFromChanged são suportados através da funcionalidade de ativação baseada em eventos, o mesmo comportamento e limitações aplicam-se aos suplementos que são ativados como resultado deste evento. Para obter uma descrição detalhada, veja Comportamento e limitações da ativação baseada em eventos.

Além destas características, os seguintes aspetos também se aplicam quando um suplemento é ativado nestes eventos.

  • O OnMessageFromChanged evento só é suportado no modo de composição de mensagens, enquanto o OnAppointmentFromChanged evento só é suportado no modo de composição de compromissos.
  • No Outlook na Web, no Windows (novo e clássico) e em dispositivos móveis, apenas o OnMessageFromChanged evento é suportado.
  • Os OnMessageFromChanged eventos e OnAppointmentFromChanged só suportam contas do Exchange. Se um utilizador mudar para uma conta que não seja do Exchange no campo De ou organizador, o cliente do Outlook limpa automaticamente a assinatura definida pela conta selecionada anteriormente.
  • Consoante o seu cliente do Outlook, nas mensagens que estão a ser compostas, a conta do Exchange é selecionada na lista pendente Do campo ou introduzida manualmente no campo. O Outlook em dispositivos móveis só suporta a seleção de uma conta na lista pendente Do campo. Nos compromissos que estão a ser compostos, a conta do Exchange é selecionada na lista pendente do campo organizador.
  • No Outlook na Web, no Windows (novo e clássico) e no Mac, os OnMessageFromChanged eventos e OnAppointmentFromChanged suportam cenários de caixa de correio delegada e partilhada. Estes cenários não são suportados no Outlook em dispositivos móveis.
  • O OnAppointmentFromChanged evento não é suportado nos calendários de grupo do Microsoft 365. Se um utilizador mudar da respetiva conta do Exchange para uma conta de calendário de grupo do Microsoft 365 no campo organizador, o cliente do Outlook limpa automaticamente a assinatura definida pela conta do Exchange.
  • Ao mudar para outra conta do Exchange no campo De ou organizador, os suplementos da conta selecionada anteriormente, se existirem, são terminados e os suplementos associados à conta recentemente selecionada são carregados antes do OnMessageFromChanged evento ou OnAppointmentFromChanged ser iniciado.
  • No Outlook na Web, no Windows (novo e clássico) e no Mac, os aliases de conta de e-mail são suportados. Quando um alias para a conta atual é selecionado no campo De ou organizador, o OnMessageFromChanged evento ou OnAppointmentFromChanged ocorre sem recarregar os suplementos da conta. Email aliases de conta não são suportados no Outlook em dispositivos móveis.
  • Quando a lista pendente Campo De ou organizador é aberta por engano ou a mesma conta que aparece no campo De ou organizador é reselecionada, o OnMessageFromChanged evento ou OnAppointmentFromChanged ocorre, mas os suplementos da conta não são terminados ou recarregados.

Confira também