Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Implemente a funcionalidade personalizada de encriptação e desencriptação num suplemento do Outlook para proteger as comunicações de e-mail. O OnMessageRead evento permite que o suplemento identifique automaticamente mensagens encriptadas e processe a desencriptação, a apresentação de conteúdos e as notificações de erro.
Observação
As OnMessageRead APIs de evento e desencriptação estão em pré-visualização. As funcionalidades em pré-visualização não devem ser utilizadas em suplementos de produção, uma vez que podem ser alteradas com base nos comentários que recebemos. Convidamo-lo a experimentar esta funcionalidade em ambientes de teste ou de desenvolvimento e a receber feedback sobre a sua experiência através do GitHub (consulte a secção "Comentários sobre suplementos do Office" no final desta página).
Descrição geral dos fluxos de trabalho de encriptação e desencriptação
Dica
- Os fluxos de trabalho de encriptação e desencriptação implementam a funcionalidade de ativação baseada em eventos. Se não estiver familiarizado com a ativação baseada em eventos nos suplementos do Outlook, recomendamos que saiba primeiro sobre a funcionalidade e a respetiva implementação. Para saber mais, veja Ativar suplementos com eventos.
- O conjunto de requisitos mínimo e as plataformas suportadas podem variar para cada API recomendada nesta secção. Recomendamos que verifique todos os requisitos em relação aos conjuntos de requisitos da API JavaScript do Outlook e que o complemente com documentação para a API específica.
A tabela seguinte fornece uma descrição geral dos fluxos de trabalho de encriptação e desencriptação de um suplemento do Outlook. Também identifica se um passo requer uma solução personalizada ou se é suportado pela biblioteca de API javaScript (Office.js) do Office.
| Etapa | Implementação |
|---|---|
| O utilizador compõe uma mensagem e utiliza o suplemento para aplicar regras de encriptação | Tem de implementar o seu próprio protocolo de encriptação para que o suplemento possa proteger o conteúdo da mensagem e os respetivos anexos. |
| O utilizador envia a mensagem | Implemente um processador para o evento OnMessageSend para que o suplemento possa executar automaticamente o protocolo de encriptação quando o utilizador selecionar Enviar. Para identificar uma mensagem encriptada com o suplemento durante o processo de desencriptação, utilize as APIs de cabeçalhos da Internet para adicionar um cabeçalho a uma mensagem. A chave de cabeçalho tem de corresponder ao valor especificado no HeaderName atributo do <elemento LaunchEvent> para o evento OnMessageRead no manifesto do suplemento. Para obter mais informações, veja Implementar a desencriptação com a ativação baseada em eventos. |
| O destinatário recebe a mensagem encriptada e abre-a | Se o destinatário tiver o mesmo suplemento que foi utilizado para encriptar a mensagem instalada no Outlook, o suplemento verifica se a chave de cabeçalho incluída na mensagem corresponde ao valor especificado para o OnMessageRead evento no manifesto. Esta operação é efetuada automaticamente por um suplemento que processa o OnMessageRead evento, para que não tenha de implementar manualmente o marcar. Se os cabeçalhos corresponderem, o evento ocorre e o OnMessageRead processador é executado. Para obter mais informações, veja Implementar a desencriptação com a ativação baseada em eventos. |
| O suplemento desencripta a mensagem | Tem de implementar o seu próprio protocolo de desencriptação no OnMessageRead processador de eventos. Enquanto o suplemento desencripta a mensagem e os respetivos anexos, é apresentada uma notificação ao utilizador para alertá-lo de que a mensagem está a ser processada pelo suplemento. Esta notificação é apresentada automaticamente por um suplemento que processa o OnMessageRead evento, para que não tenha de criar manualmente um. |
| O destinatário vê a mensagem desencriptada e os respetivos anexos, se existirem | Depois de concluída a operação de desencriptação, é apresentada automaticamente uma notificação ao utilizador para alertá-lo de que o suplemento terminou o processamento da mensagem. No processador OnMessageRead , chame o método event.completed e transmita-lhe um objeto MessageDecryptEventCompletedOptions . Com o MessageDecryptEventCompletedOptions objeto, pode especificar se pretende apresentar o conteúdo desencriptado ao destinatário. Para obter mais informações, veja Implementar o processamento de eventos. |
Implementar a desencriptação com a ativação baseada em eventos
Tem de implementar os seus próprios protocolos de encriptação e desencriptação. O suplemento também tem de ser configurado para processar o OnMessageRead evento para determinar convenientemente quando o suplemento pode desencriptar uma mensagem e apresentar os conteúdos desencriptados. Para implementar o OnMessageRead evento, tem de:
Ambientes suportados
O OnMessageRead evento é suportado na superfície De Leitura da Mensagem. O suporte varia consoante o cliente e o ambiente do Exchange, conforme mostrado na tabela seguinte.
| Cliente | Exchange Online | Exchange Subscription Edition (SE) | Exchange Server 2019 | Exchange Server 2016 |
|---|---|---|---|---|
| Navegador da Web | Não disponível | Não disponível | Não disponível | Não disponível |
| Windows (novo) | Não disponível | Não disponível | Não disponível | Não disponível |
|
Windows (clássico) Versão 2510 (Compilação 19312.20000) e posterior |
Na pré-visualização | Não disponível | Não disponível | Não disponível |
| Mac | Não disponível | Não disponível | Não disponível | Não disponível |
| Android | Não disponível | Não disponível | Não disponível | Não disponível |
| iOS | Não disponível | Não disponível | Não disponível | Não disponível |
Pré-visualizar as APIs de desencriptação no Outlook clássico no Windows
Para pré-visualizar as APIs de desencriptação no Outlook clássico no Windows, adira ao programa Microsoft 365 Insider e, em seguida, selecione o Canal Beta no cliente Outlook. O cliente tem de estar na Versão 2510 (Compilação 19312.20000) ou posterior.
O Outlook Clássico no Windows inclui uma cópia local das versões de produção e beta do Office.js em vez de carregar a partir da rede de entrega de conteúdos (CDN). Por predefinição, a cópia de produção local da API é referenciada. Para referenciar a cópia beta local da API, tem de configurar o registo do computador. Isto irá permitir-lhe testar as funcionalidades de pré-visualização nos processadores de eventos no Outlook clássico no Windows.
No registo, navegue para
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\WebExt\Developer. Se a chave não existir, crie-a.Crie uma entrada com o nome
EnableBetaAPIsInJavaScripte defina o respetivo valor como1.
Configurar o manifesto
Observação
Atualmente OnMessageRead , o evento só pode ser implementado com um manifesto apenas de suplemento.
Para ativar o OnMessageRead seu suplemento no evento, tem de configurar o <VersionOverridesV1_1> nó do ficheiro manifest.xml do suplemento da seguinte forma.
- Para executar um suplemento baseado em eventos no Outlook clássico no Windows, tem de especificar o ficheiro JavaScript que contém o processador de eventos no <elemento subordinado Substituir> do <elemento Runtime> .
- Especifique o
OnMessageReadevento noTypeatributo de um <elemento LaunchEvent> . Tem de atribuir o nome da função do processador de eventos aoFunctionNameatributo do elemento . Para facilitar a verificação se a mensagem foi encriptada pelo suplemento, tem de ser especificada uma chave de cabeçalho noHeaderNameatributo . O mesmo cabeçalho é adicionado a uma mensagem encriptada pelo suplemento.
Segue-se um exemplo de um <VersionOverrides> nó que implementa o OnMessageRead evento.
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.15">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<Runtimes>
<!-- References the HTML file that links to the event handler. -->
<Runtime resid="WebViewRuntime.Url">
<!-- References the JavaScript file that contains the event handler. This is used by classic Outlook on Windows. -->
<Override type="javascript" resid="JSRuntime.Url"/>
</Runtime>
</Runtimes>
<DesktopFormFactor>
<FunctionFile resid="WebViewRuntime.Url"/>
<!-- Implements event-based activation. -->
<ExtensionPoint xsi:type="LaunchEvent">
<LaunchEvents>
<LaunchEvent Type="OnMessageSend" FunctionName="onMessageSendHandler" SendMode="SoftBlock"/>
<LaunchEvent Type="OnMessageRead" FunctionName="onMessageReadHandler" HeaderName="contoso-encrypted"/>
</LaunchEvents>
<!-- Identifies the runtime to be used (also referenced by the Runtime element). -->
<SourceLocation resid="WebViewRuntime.Url"/>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
...
<bt:Urls>
<bt:Url id="WebViewRuntime.Url" DefaultValue="https://www.contoso.com/launchevent.html"/>
<bt:Url id="JSRuntime.Url" DefaultValue="https://www.contoso.com/launchevent.js"/>
</bt:Urls>
...
</Resources>
</VersionOverrides>
</VersionOverrides>
Implementar o processamento de eventos
O OnMessageRead processador de eventos é utilizado para executar a operação de desencriptação e determinar se pretende apresentar o conteúdo desencriptado de uma mensagem.
- Para garantir que o processador é executado quando o
OnMessageReadevento ocorre, chameOffice.actions.associateno ficheiro JavaScript onde o processador é implementado. Esta ação mapeia o nome do processador especificado noFunctionNameatributo do<LaunchEvent>elemento no manifesto para o seu equivalente JavaScript. - Após a conclusão da operação de desencriptação, tem de chamar para indicar
event.completedao cliente que o suplemento concluiu o processamento doOnMessageReadevento. Para apresentar os conteúdos desencriptados de uma mensagem e os respetivos anexos, transmita um objeto MessageDecryptEventCompletedOptions à chamada e defina aevent.completedrespetiva propriedade allowEvent comotrue. Em seguida, especifique o conteúdo desencriptado da mensagem nas propriedades emailBody e attachments do objeto. Também pode especificar quaisquer dados que o seu suplemento possa precisar para processamento na propriedade contextData . Por exemplo, pode armazenar cabeçalhos de Internet personalizados para desencriptar mensagens em cenários de resposta e reencaminhamento.
Observação
Tenha em atenção o seguinte ao criar um suplemento baseado em eventos para o Outlook clássico no Windows.
- As importações não são atualmente suportadas no ficheiro JavaScript que contém o processador de eventos.
- Quando a função JavaScript especificada no manifesto para processar uma execução de evento, o código no
Office.onReady()eOffice.initializenão é executado. Recomendamos que adicione qualquer lógica de arranque necessária ao processador de eventos, como verificar a versão do Outlook do utilizador, ao processador de eventos.
Segue-se um exemplo de um OnMessageRead processador de eventos.
function onMessageReadHandler(event) {
// Your code to decrypt the contents of a message would appear here.
...
// Use the results from your decryption process to display the decrypted contents of the message body and attachments.
const decryptedBodyContent = "<p>Please find attached the recent report and its supporting documentation.</p>";
const decryptedBody = {
coercionType: Office.CoercionType.Html,
content: decryptedBodyContent
};
// Decrypted content and properties of a file attachment.
const decryptedPdfFile = "JVBERi0xLjQKJeLjz9MKNCAwIG9i...";
const pdfFileName = "Fabrikam_Report_202509";
// Decrypted content and properties of a mail item.
const decryptedEmailFile = "VGhpcyBpcyBhIHRleHQgZmlsZS4=...";
const emailFileName = "Fabrikam_Report_202508.eml";
// Decrypted properties of a cloud attachment.
const cloudFilePath = "https://contosostorage.com/reports/weekly_forecast.xlsx";
const cloudFileName = "weekly_forecast.xlsx";
// Decrypted content and properties of an inline image.
const decryptedImageFile = "iVBORw0KGgoAAAANSUhEUgAA...";
const imageFileName = "banner.png";
const imageContentId = "image001.png@01DC1DD9.1A4AA300";
const decryptedAttachments = [
{
attachmentType: Office.MailboxEnums.AttachmentType.File,
content: decryptedPdfFile,
isInline: false,
name: pdfFileName
},
{
attachmentType: Office.MailboxEnums.AttachmentType.Item,
content: decryptedEmailFile,
isInline: false,
name: emailFileName
},
{
attachmentType: Office.MailboxEnums.AttachmentType.Cloud,
isInline: false,
name: cloudFileName,
path: cloudFilePath
},
{
attachmentType: Office.MailboxEnums.AttachmentType.File,
content: decryptedImageFile,
contentId: imageContentId,
isInline: true,
name: imageFileName
}
];
event.completed({
allowEvent: true,
emailBody: decryptedBody,
attachments: decryptedAttachments,
contextData: { messageType: "ReplyFromDecryptedMessage" }
});
}
// 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("onMessageReadHandler", onMessageReadHandler);
Dica
No Outlook clássico no Windows, quando as imagens são adicionadas a uma mensagem como anexos inline, é-lhes atribuído automaticamente um ID de conteúdo. No corpo de uma mensagem, o ID de conteúdo de um anexo inline é especificado no src atributo do <img> elemento semelhante ao seguinte exemplo.
<img width=96 height=96 id="Picture_1" src="cid:image001.png@01DC1E6F.FC7C7410">
Para identificar e fornecer facilmente estes anexos inline durante a desencriptação, recomendamos que guarde os IDs de conteúdo dos anexos inline no cabeçalho da mensagem durante a encriptação. Ligue para Office.context.mailbox.item.getAttachmentsAsync para obter o ID de conteúdo de um anexo inline. Em seguida, ligue para Office.context.mailbox.item.internetHeaders.setAsync para guardar o ID no cabeçalho da mensagem.
Comportamento e limitações
Tenha em atenção os comportamentos e limitações dos suplementos baseados em eventos. Para saber mais, veja Ativar suplementos com eventos.
Uma vez que cada suplemento utiliza o seu próprio protocolo de encriptação, uma mensagem só pode ser desencriptada pelo mesmo suplemento que o encriptou. Quando um utilizador não tem o suplemento necessário instalado para desencriptar uma mensagem, uma notificação alerta-o de que a mensagem está encriptada. Para orientar o utilizador através do processo de desencriptação, personalize uma mensagem de marcador de posição para o corpo da mensagem encriptada. A mensagem de marcador de posição pode incluir informações sobre como instalar o seu suplemento. Para definir o corpo da mensagem durante o processo de encriptação, ligue para Office.context.mailbox.item.body.setAsync.
Para garantir a segurança e confidencialidade dos dados, os conteúdos desencriptados não são armazenados no cliente do Outlook. O conteúdo de uma mensagem encriptada é desencriptado sempre que um utilizador a abre.
Primeiro, é necessário desencriptar uma mensagem encriptada para que um utilizador possa responder ou reencaminhá-la. Um utilizador não pode responder ou reencaminhar uma mensagem encriptada enquanto está a ser desencriptada.
Se um utilizador navegar para outro item de correio enquanto uma mensagem encriptada estiver a ser desencriptada, o processo de desencriptação deixa de ser executado. O utilizador tem de selecionar ou abrir novamente a mensagem para ativar o processo de desencriptação.
Ao responder ou reencaminhar mensagens encriptadas, os rascunhos são guardados sem encriptação na pasta Rascunhos .
Notificações de desencriptação
Os suplementos que processam o OnMessageRead evento apresentam automaticamente notificações em determinados cenários de desencriptação, conforme descrito na tabela seguinte.
| Notificação | Cenário |
|---|---|
| <O nome> do suplemento não está disponível e não consegue processar a sua mensagem neste momento. | Aplica-se apenas ao Outlook clássico no Windows. Esta notificação é apresentada quando o suplemento não é carregado porque um erro impediu o carregamento do suplemento ou o cliente ou computador do utilizador está offline. |
| <O nome> do suplemento não conseguiu processar a sua mensagem. | Foi encontrado um erro enquanto o suplemento estava a desencriptar a mensagem. Para repetir a operação de desencriptação, o destinatário tem de mudar para outra mensagem e, em seguida, abrir novamente a mensagem encriptada para invocar o OnMessageRead evento. |
| <O suplemento de nome> do suplemento está a desencriptar a sua mensagem. | O suplemento está a processar o OnMessageRead evento para desencriptar a mensagem. |
| Esta mensagem é encriptada pelo <suplemento de nome> do suplemento. | Esta notificação é apresentada aos destinatários que não têm o suplemento de encriptação necessário instalado. Para fornecer orientações sobre como desencriptar a mensagem, inclua uma mensagem de marcador de posição no corpo da mensagem encriptada. Para obter mais informações, veja Comportamento e limitações. |
| <O suplemento de nome> do suplemento desencriptou a sua mensagem. | O suplemento desencriptou com êxito o conteúdo da mensagem. O utilizador pode agora ver a mensagem e os respetivos anexos. |
| <O nome> do suplemento está a demorar mais tempo do que o esperado para processar a sua mensagem. | O suplemento está em execução há mais de cinco segundos, mas menos de cinco minutos. |
| <O nome> do suplemento excedeu o limite de tempo. Para tentar novamente, selecione outro e-mail e, em seguida, regresse a esta mensagem. | O suplemento excede o tempo limite após a execução durante cinco minutos. Para repetir a operação de desencriptação, o destinatário tem de mudar para outra mensagem e, em seguida, abrir novamente a mensagem encriptada para invocar o OnMessageRead evento. |
Confira também
- Privacidade e segurança para Suplementos do Office
- Ativar suplementos com eventos
- Resolver problemas de suplementos baseados em eventos e relatórios de spam
- Obter e definir cabeçalhos da Internet numa mensagem num suplemento do Outlook
- Gerir a etiqueta de confidencialidade da sua mensagem ou compromisso no modo de composição