Recurso Ao enviar para suplementos do Outlook

O recurso de envio para suplementos do Outlook fornece uma maneira de lidar com uma mensagem ou item de reunião ou bloquear usuários de determinadas ações e permite que um suplemento defina determinadas propriedades no envio.

Observação

O recurso de envio não tem suporte em suplementos que usam o manifesto unificado para o Microsoft 365 (versão prévia). Obtenha efeitos semelhantes usando a ativação baseada em evento e implementando um manipulador para os eventos OnMessageSend ou OnAppointmentSend ou ambos.

Por exemplo, use o recurso de envio para:

  • Impedir que um usuário envie informações confidenciais ou deixe a linha de assunto em branco.
  • Adicionar um destinatário específico à linha CC em mensagens ou à linha destinatários opcionais em reuniões.

O recurso ao enviar é acionado pelo tipo de evento ItemSend e é sem interface de usuário.

Para obter informações sobre limitações relacionadas ao recurso Ao enviar, consulte as Limitações posteriormente neste artigo.

Observação

Alertas Inteligentes é uma versão mais recente do recurso de envio. Ele foi lançado no conjunto de requisitos 1.12 e introduziu os OnMessageSend eventos e OnAppointmentSend . Semelhante ao recurso de envio, o Smart Alerts permite que seu suplemento marcar que determinadas condições sejam atendidas antes que um item de email seja enviado. Os Alertas Inteligentes diferenciam-se do recurso de envio da seguinte maneira:

Para obter mais informações sobre as diferenças entre alertas inteligentes e o recurso de envio, confira Diferenças entre alertas inteligentes e o recurso de envio. Convidamos você a experimentar alertas inteligentes concluindo o passo a passo.

Clientes e plataformas com suporte

A tabela a seguir mostra combinações cliente-servidor com suporte para o recurso de envio, incluindo a atualização cumulativa mínima necessária, quando aplicável. Não há suporte para combinações excluídas.

Cliente Exchange Online Exchange 2019 local
(Atualização cumulativa 1 ou posterior)
Exchange 2016 local
(Atualização cumulativa 6 ou posterior)
Navegador da Web:
interface do usuário moderna do Outlook
Sim Não aplicável Não aplicável
Navegador da Web:
interface do usuário clássica do Outlook
Não aplicável Sim Sim
Windows:
Versão 1910 (Build 12130.20272) ou posterior
Sim Sim Sim
Mac:
Versão 16.47 ou posterior
Sim Sim Sim

Observação

O recurso de envio foi lançado oficialmente no conjunto de requisitos 1.8 (consulte suporte atual do servidor e do cliente para obter detalhes). No entanto, observe que a matriz de suporte do recurso é um superconjunto do conjunto de requisitos.

Importante

Suplementos que usam o recurso de envio não são permitidos no AppSource.

Como o recurso Ao enviar funciona?

Você pode usar o recurso Ao enviar para criar um suplemento do Outlook que integre o evento síncrono ItemSend. Este evento detecta que o usuário está pressionando o botão Enviar (ou o botão Enviar Atualização para reuniões existentes) e pode ser usado para impedir que um item seja enviado se houver falha na validação. Por exemplo, quando um usuário dispara um evento de envio de mensagem, um suplemento do Outlook que usa o recurso Ao enviar pode:

  • Leia e valide o conteúdo da mensagem de email.
  • Verifique se a mensagem inclui uma linha de assunto.
  • Defina um destinatário predeterminado.

A validação é feita no lado do cliente no Outlook quando o evento de envio é disparado e o suplemento tem até 5 minutos antes do tempo limite. Se a validação falhar, o envio do item será bloqueado e uma mensagem de erro será exibida em uma barra de informações que solicita que o usuário tome medidas.

Observação

Em Outlook na Web, quando o recurso de envio é disparado em uma mensagem que está sendo composta na guia navegador do Outlook, o item é exibido para sua própria janela ou guia do navegador para concluir a validação e outros processamentos.

A captura de tela a seguir mostra uma barra de informações que notifica que o remetente adicione um assunto.

Uma mensagem de erro que solicita que o usuário insira uma linha de assunto ausente.

A captura de tela a seguir mostra uma barra de informações que notifica que o remetente de que foram encontradas palavras bloqueadas.

Uma mensagem de erro informando ao usuário que palavras bloqueadas foram encontradas.

Limitações

Atualmente, o recurso Ao enviar tem as seguintes limitações.

  • Recurso append-on-send – Se você chamar item.body.AppendOnSendAsync no manipulador de envio, um erro será retornado.

  • AppSource – Você não pode publicar suplementos do Outlook que usam o recurso de envio no AppSource , pois eles falharão na validação do AppSource. Os suplementos que usam o recurso Ao enviar devem ser implantados pelos administradores. Se você quiser que a opção publique seu suplemento no AppSource, considere usar alertas inteligentes, que é uma versão mais recente do recurso de envio. Para saber mais sobre alertas inteligentes e como implantar esses suplementos, confira Usar alertas inteligentes e os eventos OnMessageSend e OnAppointmentSend em seu suplemento do Outlook e opções de listagem do AppSource para seu suplemento do Outlook baseado em evento.

    Importante

    Ao executar npm run validate para validar o manifesto do suplemento, você receberá o erro: "O suplemento de caixa de correio que contém o evento ItemSend é inválido. O manifesto de suplemento da caixa de correio contém o evento ItemSend em VersionOverrides que não é permitido." Essa mensagem é exibida porque os suplementos que usam o ItemSend evento, que é necessário para esta versão do recurso de envio, não podem ser publicados no AppSource. Você ainda poderá carregar e executar o suplemento, desde que nenhum outro erro de validação seja encontrado.

  • Manifesto – há suporte para apenas um ItemSend evento por suplemento. Se você tiver dois ou mais eventos ItemSend em um manifesto, haverá falha na validação.

  • Desempenho – Várias ida e volta para o servidor Web que hospeda o suplemento podem afetar o desempenho do suplemento. Considere os efeitos sobre o desempenho ao criar suplementos que exigem várias operações baseadas em mensagem ou reunião.

  • Enviar posterior (somente Mac) – Se houver suplementos enviados, o recurso Enviar Posterior não estará disponível.

Além disso, não é recomendável que você chame item.close() o manipulador de eventos no envio, pois o fechamento do item deve acontecer automaticamente após a conclusão do evento.

Limitações de tipo/modo de caixa de correio

A funcionalidade Ao enviar é compatível apenas com caixas de correio de usuários no Outlook na Web, Windows e Mac. Além das situações em que os suplementos não são ativados conforme observado nos itens da caixa de correio disponíveis para suplementos da página de visão geral dos suplementos do Outlook, a funcionalidade não tem suporte no momento para o modo offline em que esse modo está disponível.

Nos casos em que os suplementos do Outlook não são ativados, o suplemento de envio não será executado e a mensagem será enviada.

No entanto, se o recurso de envio estiver habilitado e disponível, mas o cenário da caixa de correio não tiver suporte, o Outlook não permitirá o envio.

Vários suplementos Ao enviar

Se vários suplementos Ao enviar estiverem instalados, os suplementos serão executados na ordem em que são recebidos das APIs getAppManifestCall ou getExtensibilityContext. Se o primeiro suplemento permitir envio, o segundo suplemento poderá alterar algo que faria o primeiro bloquear o envio. No entanto, o primeiro suplemento não será executado novamente se todos os suplementos instalados tiverem permissão de envio.

Por exemplo, o Suplemento1 e o Suplemento2 usam o recurso Ao enviar. O Suplemento1 é instalado primeiro e o Suplemento2 é instalado depois. O Suplemento1 verifica se a palavra Fabrikam aparece na mensagem como uma condição para o suplemento permitir o envio. No entanto, o Suplemento2 remove as ocorrências da palavra Fabrikam. A mensagem será enviada com todas as instâncias de Fabrikam removidas (devido à ordem de instalação do Suplemento1 e do Suplemento2).

Implantar suplementos do Outlook que usam Ao enviar

Recomendamos que os administradores implantem suplementos do Outlook que usam o recurso Ao enviar. Os administradores precisam garantir que o suplemento Ao enviar:

  • Esteja sempre presente a qualquer momento que um item de redigir é aberto (para email: novo, responder ou encaminhar).
  • Não pode ser fechado ou desabilitado pelo usuário.

Instalar suplementos do Outlook que usam Ao enviar

O recurso Ao enviar no Outlook exige que os suplementos sejam configurados para os tipos de eventos de envio. Selecione a plataforma que você deseja configurar.

Suplementos para Outlook na Web (clássico) que usam o recurso de envio serão executados para usuários que recebem uma política de caixa de correio Outlook na Web que tem o sinalizador OnSendAddinsEnabled definido como true.

Para instalar um novo suplemento, execute os seguintes cmdlets do PowerShell do Exchange Online.

$Data=Get-Content -Path '.\Contoso Message Body Checker.xml' -Encoding Byte –ReadCount 0
New-App -OrganizationApp -FileData $Data -DefaultStateForUser Enabled

Observação

Para saber como usar o PowerShell para se conectar ao Exchange Online, confira Conectar ao Exchange Online PowerShell.

Habilitar o recurso Ao enviar

Por padrão, a funcionalidade Ao enviar está desabilitada. Os administradores podem habilitar a funcionalidade Ao enviar executando os cmdlets do PowerShell do Exchange Online.

Para habilitar suplementos Ao enviar para todos os usuários:

  1. Criar uma nova política de caixa de correio do Outlook na Web.

     New-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy
    

    Observação

    Os administradores podem usar uma diretiva existente, mas a funcionalidade Ao enviar tem suporte apenas para certos tipos de caixa de correio. As caixas de correio sem suporte serão impedidas de enviar por padrão no Outlook na Web.

  2. Habilitar o recurso Ao enviar.

     Get-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy | Set-OWAMailboxPolicy –OnSendAddinsEnabled:$true
    
  3. Atribua a política aos usuários.

     Get-User -Filter {RecipientTypeDetails -eq 'UserMailbox'}|Set-CASMailbox -OwaMailboxPolicy OWAOnSendAddinAllUserPolicy
    

Habilitar o recurso Ao enviar para um grupo de usuários

Para habilitar o recurso Ao enviar para um grupo específico de usuários, as etapas são as seguintes. Neste exemplo, um administrador deseja habilitar apenas o recurso de suplemento Ao enviar do Outlook na Web em um ambiente para usuários do Finance (em que os usuários do Finance estão no Departamento Financeiro).

  1. Crie uma nova política de caixa de correio do Outlook na Web para o grupo.

     New-OWAMailboxPolicy FinanceOWAPolicy
    

    Observação

    Os administradores podem usar uma política existente, mas a funcionalidade Ao enviar é compatível apenas com certos tipos de caixa de correio (consulte Limitações de tipo de caixa de correio anteriormente neste artigo para obter mais informações). As caixas de correio sem suporte serão impedidas de enviar por padrão no Outlook na Web.

  2. Habilitar o recurso Ao enviar.

     Get-OWAMailboxPolicy FinanceOWAPolicy | Set-OWAMailboxPolicy –OnSendAddinsEnabled:$true
    
  3. Atribua a política aos usuários.

     $targetUsers = Get-Group 'Finance'|select -ExpandProperty members
     $targetUsers | Get-User -Filter {RecipientTypeDetails -eq 'UserMailbox'}|Set-CASMailbox -OwaMailboxPolicy FinanceOWAPolicy
    

Observação

Espere até 60 minutos para a política entrar em vigor ou reinicie os Serviços de Informações da Internet (IIS). Quando a política entrar em vigor, o recurso Ao enviar será habilitado para o grupo.

Desabilitar o recurso Ao enviar

Para desabilitar o recurso Ao enviar de um usuário ou atribuir uma política de caixa de correio do Outlook na Web que não tenha o sinalizador habilitado, execute os seguintes cmdlets. Neste exemplo, a política de caixa de correio é ContosoCorpOWAPolicy.

Get-CASMailbox joe@contoso.com | Set-CASMailbox –OWAMailboxPolicy "ContosoCorpOWAPolicy"

Observação

Para saber mais sobre como usar o cmdlet Set-OwaMailboxPolicy para configurar as políticas de caixa de correio da Web existentes do Outlook, confira Set-OwaMailboxPolicy.

Para desabilitar o recurso Ao enviar para todos os usuários que tenham uma política específica de caixa de correio do Outlook na Web atribuída, execute os seguintes cmdlets.

Get-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy | Set-OWAMailboxPolicy –OnSendAddinsEnabled:$false

Cenários do recurso Ao enviar

Veja a seguir os cenários com suporte e sem suporte para suplementos que usam o recurso Ao enviar.

Manipuladores de eventos são definidos dinamicamente

Os manipuladores de eventos do suplemento devem ser definidos até o momento Office.initialize ou Office.onReady() chamados (para obter mais informações, consulte Inicializar um suplemento do Outlook e Inicializar seu Suplemento do Office). Se o código do manipulador for definido dinamicamente por determinadas circunstâncias durante a inicialização, você deverá criar uma função stub para chamar o manipulador depois que ele estiver completamente definido. A função stub deve ser referenciada no <atributo do elemento Event> do manifesto.FunctionName Essa solução alternativa garante que o manipulador esteja definido e pronto para ser referenciado uma vez Office.initialize ou Office.onReady() executado.

Se o manipulador não for definido depois que o suplemento for inicializado, o remetente será notificado de que "A função de retorno de chamada é inacessível" por meio de uma barra de informações no item de email.

A caixa de correio do usuário tem o recurso de suplemento Ao enviar habilitado, mas nenhum suplemento está instalado

Nesse cenário, o usuário poderá enviar mensagens e itens de reunião sem a execução de suplementos.

A caixa de correio do usuário tem o recurso de suplemento Ao enviar habilitado, e os suplementos compatíveis com Ao enviar estão instalados e habilitados

Os suplementos serão executados durante o evento de envio, que em seguida permitirão ou impedirão o usuário de enviar.

Delegação de caixa de correio, onde a caixa de correio 1 tem permissões de acesso total à caixa de correio 2

Navegador da Web (Outlook clássico)

Cenário Recurso Ao enviar da caixa de correio 1 Recurso Ao enviar da caixa de correio 2 Sessão Web do Outlook (clássico) Resultado Com suporte?
1 Habilitado Habilitado Nova sessão A caixa de correio 1 não consegue enviar um item de mensagem ou de reunião da caixa de correio 2. Não há suporte atualmente. Como alternativa, use o cenário 3.
2 Desabilitado Habilitado Nova sessão A caixa de correio 1 não consegue enviar um item de mensagem ou de reunião da caixa de correio 2. Não há suporte atualmente. Como alternativa, use o cenário 3.
3 Habilitado Habilitado Mesma sessão Os suplementos Ao enviar atribuídos à caixa de correio 1 são executados ao enviar. Com suporte.
4 Habilitado Desabilitado Nova sessão Nenhum suplemento Ao envio é executado; item de mensagem ou de reunião é enviado. Com suporte.

Navegador da Web (Outlook moderno), Windows, Mac

Para impor o Ao enviar, os administradores devem garantir que a política tenha sido habilitada nas duas caixas de correio. Para saber como dar suporte ao acesso de delegados em um suplemento, consulte Habilitar pastas compartilhadas e cenários de caixa de correio compartilhada.

Caixa de correio do usuário com recurso/política de suplemento Ao enviar habilitado, os suplementos com suporte à funcionalidade Ao enviar estão instalados e habilitados e o modo offline está habilitado

Os suplementos Ao enviar serão executados de acordo com o estado online do usuário, o back-end do suplemento e o Exchange.

Estado do usuário

Os suplementos Ao enviar serão executados durante o envio se o usuário estiver online. Se o usuário estiver offline, os suplementos Ao enviar não serão executados e o item de mensagem ou de reunião não será enviado.

Estado do back-end do suplemento

Um suplemento Ao enviar será executado se o seu back-end estiver online e acessível. Se o back-end estiver offline, ao enviar será desabilitado.

Estado do Exchange

Os suplementos Ao enviar serão executados durante o envio se o servidor do Exchange estiver online e acessível. Se o suplemento Ao enviar não puder alcançar o Exchange e a política ou cmdlet aplicável estiverem ativados, o envio será desabilitado.

Observação

No Mac, em qualquer estado offline, o botão Enviar (ou o botão Enviar Atualização para reuniões existentes) está desabilitado e uma notificação é exibida informando que sua organização não permite envio quando o usuário está offline.

O usuário pode editar o item enquanto os suplementos de envio estão trabalhando nele

Enquanto os suplementos no envio estão processando um item, o usuário pode editar o item adicionando, por exemplo, texto ou anexos inadequados. Se você quiser impedir que o usuário edite o item enquanto o suplemento estiver sendo processado no envio, você poderá implementar uma solução alternativa usando uma caixa de diálogo. Essa solução alternativa pode ser usada em Outlook na Web (clássico), Windows e Mac.

Importante

Modern Outlook na Web: Para impedir que o usuário edite o item enquanto seu suplemento está sendo processado no envio, você deve definir o sinalizador OnSendAddinsEnabled comotrue, conforme descrito nos suplementos Install Outlook que usam a seção de envio anteriormente neste artigo.

No manipulador de envio:

  1. Chame displayDialogAsync para abrir uma caixa de diálogo para que cliques e teclas do mouse sejam desabilitados.

    Importante

    Para obter esse comportamento no Outlook na Web clássico, você deve definir a propriedade displayInIframe como true no options parâmetro da displayDialogAsync chamada.

  2. Implementar o processamento do item.

  3. Feche a caixa de diálogo. Além disso, manipule o que acontece se o usuário fechar a caixa de diálogo.

Exemplos de código

Os seguintes exemplos de código mostram como criar um suplemento simples Ao enviar. Para baixar o exemplo de código em que esses exemplos se baseiam, consulte Outlook-Add-in-On-Send.

Dica

Se você usar uma caixa de diálogo com o evento de envio, feche a caixa de diálogo antes de concluir o evento.

Manifesto, versão de substituição e evento

Um exemplo de código Outlook-Add-in-On-Send inclui dois manifestos:

  • Contoso Message Body Checker.xml– mostra como marcar o corpo de uma mensagem para palavras restritas ou informações confidenciais no envio.

  • Contoso Subject and CC Checker.xml – mostra como adicionar um destinatário à linha CC e verificar se a mensagem inclui uma linha de assunto no envio.

No arquivo de manifesto Contoso Message Body Checker.xml, inclua o arquivo de função e o nome da função que deve ser chamada no evento ItemSend. A operação é executada de maneira síncrona.

<Hosts>
    <Host xsi:type="MailHost">
        <DesktopFormFactor>
            <!-- The functionfile and function name to call on message send.  -->
            <!-- In this case, the function validateBody will be called within the JavaScript code referenced in residUILessFunctionFileUrl. -->
            <FunctionFile resid="residUILessFunctionFileUrl" />
            <ExtensionPoint xsi:type="Events">
                <Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateBody" />
            </ExtensionPoint>
        </DesktopFormFactor>
    </Host>
</Hosts>

Importante

Se você estiver usando o Visual Studio 2019 para desenvolver seu suplemento de envio, poderá receber um aviso de validação como o seguinte: "Este é um xsi:type 'http://schemas.microsoft.com/office/mailappversionoverrides/1.1:Events'inválido.". Para contornar isso, você precisará de uma versão mais recente do MailAppVersionOverridesV1_1.xsd que foi fornecida como uma essência do GitHub em um blog sobre este aviso.

Para o arquivo de manifesto Contoso Subject and CC Checker.xml, o exemplo a seguir mostra o arquivo de função e o nome da função para chamar o evento de envio de mensagem.

<Hosts>
    <Host xsi:type="MailHost">
        <DesktopFormFactor>
            <!-- The functionfile and function name to call on message send.  -->
            <!-- In this case the function validateSubjectAndCC will be called within the JavaScript code referenced in residUILessFunctionFileUrl. -->
            <FunctionFile resid="residUILessFunctionFileUrl" />
            <ExtensionPoint xsi:type="Events">
                <Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateSubjectAndCC" />
            </ExtensionPoint>
        </DesktopFormFactor>
    </Host>
</Hosts>

A API Ao enviar requer VersionOverrides v1_1. Veja a seguir como adicionar o nó VersionOverrides em seu manifesto.

 <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
     <!-- On-send requires VersionOverridesV1_1 -->
     <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
         ...
     </VersionOverrides>
</VersionOverrides>

Observação

Para saber mais sobre manifestos para suplementos do Outlook, confira Manifesto de Suplementos do Office.

Objetos Event e item, e os métodos body.getAsync e body.setAsync

Para acessar o item de mensagem ou de reunião selecionado no momento (neste exemplo, a mensagem redigida recentemente), use o namespace Office.context.mailbox.item. O ItemSend evento é transmitido automaticamente pelo recurso de envio para a função especificada no manifesto , neste exemplo, a validateBody função.

let mailboxItem;

Office.initialize = function (reason) {
    mailboxItem = Office.context.mailbox.item;
}

// Entry point for Contoso Message Body Checker add-in before send is allowed.
// <param name="event">ItemSend event is automatically passed by on-send code to the function specified in the manifest.</param>
function validateBody(event) {
    mailboxItem.body.getAsync("html", { asyncContext: event }, checkBodyOnlyOnSendCallBack);
}

A validateBody função obtém o corpo atual no formato especificado (HTML) e passa o ItemSend objeto de evento que o código deseja acessar na função de retorno de chamada. Além do método getAsync, o objeto Body também fornece um método setAsync que você pode usar para substituir o corpo pelo texto especificado.

Observação

Para saber mais, confira Objeto do Evento e Body.getAsync.

Objeto NotificationMessages e método event.completed

A função checkBodyOnlyOnSendCallBack usa uma expressão regular para determinar se o corpo da mensagem contém palavras bloqueadas. Se ela encontrar uma correspondência com uma matriz de palavras restritas, bloqueará os emails de serem enviados e notificará o remetente pela barra de informações. Para fazer isso, ele usa a notificationMessages propriedade do Item objeto para retornar um objeto NotificationMessages . Ele, em seguida, adiciona uma notificação ao item chamando o método addAsync, como mostrado no exemplo a seguir.

// Determine whether the body contains a specific set of blocked words. If it contains the blocked words, block email from being sent. Otherwise allow sending.
// <param name="asyncResult">ItemSend event passed from the calling function.</param>
function checkBodyOnlyOnSendCallBack(asyncResult) {
    const listOfBlockedWords = new Array("blockedword", "blockedword1", "blockedword2");
    const wordExpression = listOfBlockedWords.join('|');

    // \b to perform a "whole words only" search using a regular expression in the form of \bword\b.
    // i to perform case-insensitive search.
    const regexCheck = new RegExp('\\b(' + wordExpression + ')\\b', 'i');
    const checkBody = regexCheck.test(asyncResult.value);

    if (checkBody) {
        mailboxItem.notificationMessages.addAsync('NoSend', { type: 'errorMessage', message: 'Blocked words have been found in the body of this email. Please remove them.' });
        // Block send.
        asyncResult.asyncContext.completed({ allowEvent: false });
    }

    // Allow send.
    asyncResult.asyncContext.completed({ allowEvent: true });
}

A seguir estão os parâmetros para o addAsync método.

  • NoSend – uma cadeia de caracteres que é uma chave especificada pelo desenvolvedor para fazer referência a uma mensagem de notificação. Você pode usá-la para modificar esta mensagem mais tarde. A chave não pode ter mais de 32 caracteres.
  • type – Uma das propriedades do parâmetro de objeto JSON. Representa o tipo de uma mensagem; os tipos correspondem aos valores da enumeração Office.MailboxEnums.ItemNotificationMessageType. Os valores possíveis são indicador de progresso, mensagem informativa ou mensagem de erro. Neste exemplo, type é uma mensagem de erro.
  • message – Uma das propriedades do parâmetro de objeto JSON. Neste exemplo, message é o texto da mensagem de notificação.

Para sinalizar que o suplemento terminou de processar o ItemSend evento disparado pela operação de envio, chame o método event.completed({allowEvent:Boolean}). A propriedade allowEvent é um Booliano. Se for definido como true, o envio será permitido. Se definido como false, a mensagem de email será impedida de ser enviada.

Métodos replaceAsync, removeAsync e getAllAsync

Além do método addAsync, o objeto NotificationMessages também inclui os métodos replaceAsync, removeAsync e getAllAsync. Esses métodos não são usados neste exemplo de código. Para saber mais, veja NotificationMessages.

Código do Assunto e do verificador de CC

O exemplo de código a seguir mostra como adicionar um destinatário à linha CC e verifica se a mensagem inclui um assunto ao enviar. Este exemplo usa o recurso Ao enviar para permitir ou proibir o envio de um email.

// Invoke by Contoso Subject and CC Checker add-in before send is allowed.
// <param name="event">ItemSend event is automatically passed by on-send code to the function specified in the manifest.</param>
function validateSubjectAndCC(event) {
    shouldChangeSubjectOnSend(event);
}

// Determine whether the subject should be changed. If it is already changed, allow send. Otherwise change it.
// <param name="event">ItemSend event passed from the calling function.</param>
function shouldChangeSubjectOnSend(event) {
    mailboxItem.subject.getAsync(
        { asyncContext: event },
        function (asyncResult) {
            addCCOnSend(asyncResult.asyncContext);
            //console.log(asyncResult.value);
            // Match string.
            const checkSubject = (new RegExp(/\[Checked\]/)).test(asyncResult.value)
            // Add [Checked]: to subject line.
            subject = '[Checked]: ' + asyncResult.value;

            // Determine whether a string is blank, null, or undefined.
            // If yes, block send and display information bar to notify sender to add a subject.
            if (asyncResult.value === null || (/^\s*$/).test(asyncResult.value)) {
                mailboxItem.notificationMessages.addAsync('NoSend', { type: 'errorMessage', message: 'Please enter a subject for this email.' });
                asyncResult.asyncContext.completed({ allowEvent: false });
            }
            else {
                // If can't find a [Checked]: string match in subject, call subjectOnSendChange function.
                if (!checkSubject) {
                    subjectOnSendChange(subject, asyncResult.asyncContext);
                    //console.log(checkSubject);
                }
                else {
                    // Allow send.
                    asyncResult.asyncContext.completed({ allowEvent: true });
                }
            }
        });
}

// Add a CC to the email. In this example, CC contoso@contoso.onmicrosoft.com
// <param name="event">ItemSend event passed from calling function</param>
function addCCOnSend(event) {
    mailboxItem.cc.setAsync(['Contoso@contoso.onmicrosoft.com'], { asyncContext: event });
}

// Determine whether the subject should be changed. If it is already changed, allow send, otherwise change it.
// <param name="subject">Subject to set.</param>
// <param name="event">ItemSend event passed from the calling function.</param>
function subjectOnSendChange(subject, event) {
    mailboxItem.subject.setAsync(
        subject,
        { asyncContext: event },
        function (asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed) {
                mailboxItem.notificationMessages.addAsync('NoSend', { type: 'errorMessage', message: 'Unable to set the subject.' });

                // Block send.
                asyncResult.asyncContext.completed({ allowEvent: false });
            }
            else {
                // Allow send.
                asyncResult.asyncContext.completed({ allowEvent: true });
            }
        });
}

Para saber mais sobre como adicionar um destinatário à linha CC e verificar se a mensagem de e-mail inclui uma linha de assunto ao enviar e para ver as APIs que você pode usar, consulte o exemplo Outlook-Add-in-On-Send. O código é bem comentado.

Depurar suplementos do Outlook que usam o envio

Para obter instruções sobre como depurar seu suplemento de envio, consulte Depurar comandos de função nos suplementos do Outlook.

Dica

Se o erro "A função de retorno de chamada for inacessível" aparecer quando os usuários executarem seu suplemento e o manipulador de eventos do suplemento for definido dinamicamente, você deverá criar uma função stub como uma solução alternativa. Consulte Manipuladores de eventos são definidos dinamicamente para obter mais informações.

Confira também