Obter e definir cabeçalhos de Internet em uma mensagem em um suplemento do Outlook

Histórico

Um requisito comum no desenvolvimento de suplementos do Outlook é armazenar propriedades personalizadas associadas a um suplemento em níveis diferentes. Atualmente, as propriedades personalizadas são armazenadas no nível do item ou da caixa de correio.

  • Nível do item – Para propriedades que se aplicam a um item específico, use o objeto CustomProperties . Por exemplo, armazene um código de cliente associado à pessoa que enviou o email.
  • Nível da caixa de correio – Para propriedades que se aplicam a todos os itens de email na caixa de correio do usuário, use o objeto RoamingSettings . Por exemplo, armazene a preferência de um usuário para mostrar a temperatura em uma determinada escala.

Ambos os tipos de propriedades não são preservados depois que o item sai do servidor exchange, portanto, os destinatários de email não podem obter nenhuma propriedade definida no item. Portanto, os desenvolvedores não podem acessar essas configurações ou outras propriedades MIME (Extensão multiuso do Internet Mail) para habilitar cenários de leitura melhores.

Embora haja uma maneira de definir os cabeçalhos da Internet por meio de solicitações do EWS (Exchange Web Services), em alguns cenários, fazer uma solicitação EWS não funcionará. Por exemplo, no modo Compose na área de trabalho do Outlook, a ID do item não é sincronizada no saveAsync modo armazenado em cache.

Dica

Para saber mais sobre como usar essas opções, consulte Obter e definir metadados de suplemento para um suplemento do Outlook.

Finalidade da API de cabeçalhos da Internet

Introduzidas no conjunto de requisitos da caixa de correio 1.8, as APIs de cabeçalhos da Internet permitem que os desenvolvedores:

  • Carimbo de informações em um email que persiste depois que ele deixa o Exchange entre todos os clientes.
  • Leia informações sobre um email que persistiu depois que o email deixou o Exchange entre todos os clientes em cenários de leitura por email.
  • Acesse todo o cabeçalho MIME do email.

Diagrama de cabeçalhos da Internet. Texto: o usuário 1 envia email. O suplemento gerencia cabeçalhos personalizados da Internet enquanto o usuário está compondo email. O usuário 2 recebe o email. O suplemento obtém cabeçalhos de Internet do email recebido e analisa e usa cabeçalhos personalizados.

Clientes com suporte

Para usar a API de cabeçalhos da Internet no suplemento, seu cliente do Outlook deve dar suporte ao conjunto de requisitos 1.8 ou posterior. Para obter informações sobre clientes com suporte, consulte Suporte ao cliente do Outlook.

A API de cabeçalhos da Internet também tem suporte no Outlook no Android e no iOS a partir da versão 4.2405.0. Para saber mais sobre os recursos com suporte no Outlook em dispositivos móveis, confira APIs JavaScript do Outlook com suporte no Outlook em dispositivos móveis.

Definir cabeçalhos de Internet ao compor uma mensagem

Use a propriedade item.internetHeaders para gerenciar os cabeçalhos personalizados da Internet que você coloca na mensagem atual no modo Compose.

Definir, obter e remover o exemplo de cabeçalhos personalizados da Internet

O exemplo a seguir mostra como definir, obter e remover cabeçalhos personalizados da Internet.

// Set custom internet headers.
function setCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.setAsync(
    { "preferred-fruit": "orange", "preferred-vegetable": "broccoli", "best-vegetable": "spinach" },
    setCallback
  );
}

function setCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully set headers");
  } else {
    console.log("Error setting headers: " + JSON.stringify(asyncResult.error));
  }
}

// Get custom internet headers.
function getSelectedCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.getAsync(
    ["preferred-fruit", "preferred-vegetable", "best-vegetable", "nonexistent-header"],
    getCallback
  );
}

function getCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Selected headers: " + JSON.stringify(asyncResult.value));
  } else {
    console.log("Error getting selected headers: " + JSON.stringify(asyncResult.error));
  }
}

// Remove custom internet headers.
function removeSelectedCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.removeAsync(
    ["best-vegetable", "nonexistent-header"],
    removeCallback);
}

function removeCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully removed selected headers");
  } else {
    console.log("Error removing selected headers: " + JSON.stringify(asyncResult.error));
  }
}

setCustomHeaders();
getSelectedCustomHeaders();
removeSelectedCustomHeaders();
getSelectedCustomHeaders();

/* Sample output:
Successfully set headers
Selected headers: {"best-vegetable":"spinach","preferred-fruit":"orange","preferred-vegetable":"broccoli"}
Successfully removed selected headers
Selected headers: {"preferred-fruit":"orange","preferred-vegetable":"broccoli"}
*/

Obter cabeçalhos da Internet durante a leitura de uma mensagem

Chame item.getAllInternetHeadersAsync para obter cabeçalhos da Internet na mensagem atual no modo de leitura.

Obter preferências de remetente do exemplo de cabeçalhos MIME atuais

Com base no exemplo da seção anterior, o código a seguir mostra como obter as preferências do remetente dos cabeçalhos MIME do email atual.

Office.context.mailbox.item.getAllInternetHeadersAsync(getCallback);

function getCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Sender's preferred fruit: " + asyncResult.value.match(/preferred-fruit:.*/gim)[0].slice(17));
    console.log("Sender's preferred vegetable: " + asyncResult.value.match(/preferred-vegetable:.*/gim)[0].slice(21));
  } else {
    console.log("Error getting preferences from header: " + JSON.stringify(asyncResult.error));
  }
}

/* Sample output:
Sender's preferred fruit: orange
Sender's preferred vegetable: broccoli
*/

Importante

Este exemplo funciona para casos simples. Para obter uma recuperação de informações mais complexa (por exemplo, cabeçalhos de várias instâncias ou valores dobrados, conforme descrito no RFC 2822), tente usar uma biblioteca de análise MIME apropriada.

Atualmente, os cabeçalhos da Internet são um recurso finito na caixa de correio de um usuário. Quando a cota estiver esgotada, você não poderá criar mais cabeçalhos de Internet nessa caixa de correio, o que pode resultar em um comportamento inesperado de clientes que dependem disso para funcionar.

Aplique as diretrizes a seguir ao criar cabeçalhos da Internet no suplemento.

  • Create o número mínimo de cabeçalhos necessários. A cota de cabeçalho é baseada no tamanho total dos cabeçalhos aplicados a uma mensagem. Em Exchange Online, o limite de cabeçalho é limitado a 256 KB, enquanto em um ambiente local do Exchange, o limite é determinado pelo administrador da sua organização. Para obter mais informações sobre limites de cabeçalho, consulte Exchange Online limites de mensagem e Exchange Server limites de mensagem.
  • Nomeie cabeçalhos para que você possa reutilizar e atualizar seus valores posteriormente. Como tal, evite nomear cabeçalhos de maneira variável (por exemplo, com base na entrada do usuário, carimbo de data/hora etc.).

Confira também