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:
- Ele oferece opções de modo de envio quando você deseja fornecer aos seus usuários recomendações opcionais em vez de condições obrigatórias.
- Ele permite que seu suplemento seja publicado no AppSource se a propriedade de modo de envio estiver definida como a opção de usuário prompt ou bloco macio . Para saber mais sobre como publicar um suplemento baseado em evento, consulte Opções de listagem do AppSource para seu suplemento do Outlook baseado em evento.
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.
A captura de tela a seguir mostra uma barra de informações que notifica que o remetente de que foram encontradas palavras bloqueadas.
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 oItemSend
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 eventosItemSend
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:
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.
Habilitar o recurso Ao enviar.
Get-OWAMailboxPolicy OWAOnSendAddinAllUserPolicy | Set-OWAMailboxPolicy –OnSendAddinsEnabled:$true
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).
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.
Habilitar o recurso Ao enviar.
Get-OWAMailboxPolicy FinanceOWAPolicy | Set-OWAMailboxPolicy –OnSendAddinsEnabled:$true
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:
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
nooptions
parâmetro dadisplayDialogAsync
chamada.Implementar o processamento do item.
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de