Gerenciar a data e a hora de entrega de uma mensagem

O cliente do Outlook oferece a opção de atrasar a entrega de uma mensagem, mas exige que você mantenha o Outlook e seu dispositivo em execução para enviá-la no momento especificado. Com a API JavaScript do Office, agora você pode implementar um suplemento do Outlook que envia mensagens agendadas mesmo com o cliente do Outlook fechado ou com o dispositivo desativado. Essa funcionalidade fornece aos usuários a conveniência de agendar campanhas de email marketing ou tempo para que uma mensagem seja entregue durante o horário comercial de um colega ou cliente.

Observação

O suporte para esse recurso foi introduzido no conjunto de requisitos 1.13. Confira, clientes e plataformas que oferecem suporte a esse conjunto de requisitos.

Configurar o manifesto

Para agendar a entrega de uma mensagem, seu suplemento deve ser capaz de ativar no modo de composição de mensagem. Isso é definido por meio do ponto de extensão MessageComposeCommandSurface em um manifesto XML ou na propriedade mailCompose "contexts" em um manifesto unificado para Microsoft 365 (versão prévia).

Para obter mais diretrizes sobre como configurar um manifesto de suplemento do Outlook, consulte Manifestos de suplemento do Office.

Acessar a propriedade de entrega de uma mensagem

A propriedade item.delayDeliveryTime retorna um objeto DelayDeliveryTime que fornece métodos para obter ou definir a data e a hora da entrega de uma mensagem.

Obter a data e a hora da entrega de uma mensagem

Para obter a data e a hora de entrega de uma mensagem no modo de composição, chame item.delayDeliveryTime.getAsync conforme mostrado no exemplo a seguir. Se uma data de entrega ainda não tiver sido definida em uma mensagem, a chamada retornará 0. Caso contrário, ele retorna um objeto JavaScript Date.

// Gets the delivery date and time of a message.
Office.context.mailbox.item.delayDeliveryTime.getAsync((asyncResult) => {
  if (asyncResult.status === Office.AsyncResultStatus.Failed) {
    console.log(asyncResult.error.message);
    return;
  }

  const deliveryDate = asyncResult.value;
  if (deliveryDate === 0) {
    console.log("Your message will be delivered immediately when you select Send.");
  } else {
    const date = new Date(deliveryDate);
    console.log(`Message delivery date and time: ${date.toString()}`);
  }
});

Defina a data e a hora da entrega de uma mensagem

Para atrasar a entrega de uma mensagem, passe um objeto JavaScript Date como um parâmetro para o método item.delayDeliveryTime.setAsync , conforme mostrado no exemplo a seguir.

// Delays the delivery time by five minutes from the current time.
const currentTime = new Date().getTime();
const milliseconds = 5 * 60 * 1000;
const timeDelay = new Date(currentTime + milliseconds);
Office.context.mailbox.item.delayDeliveryTime.setAsync(timeDelay, (asyncResult) => {
  if (asyncResult.status === Office.AsyncResultStatus.Failed) {
    console.log(asyncResult.error.message);
    return;
  }

  console.log("Message delivery has been scheduled.");
});

Comportamento e limitações de recursos

Quando você agenda a entrega de uma mensagem usando o item.delayDeliveryTime.setAsync método, o atraso é processado no servidor. Isso permite que a mensagem seja enviada mesmo que o cliente do Outlook não esteja em execução. No entanto, devido a isso, a mensagem não aparece na pasta Outbox, portanto, você não poderá editar a mensagem ou cancelar sua entrega depois de selecionar Enviar. Você poderá examinar a mensagem da pasta Itens Enviados depois que a mensagem for enviada.

Esse comportamento difere de uma mensagem agendada usando a opção de Entrega de Atraso nativa no cliente do Outlook, que processa o lado do cliente de atraso. Uma mensagem agendada usando essa opção aparece na pasta Outbox e só é entregue se o cliente do Outlook do qual ele foi enviado estiver em execução na hora de entrega especificada.

Experimente snippets de exemplo no Script Lab

Obtenha o suplemento Script Lab para Outlook e experimente o snippet de exemplo "Obter e definir a entrega de mensagens (Compose de Mensagem)". Para saber mais sobre o Script Lab, consulte Explorar a API JavaScript do Office usando o Script Lab.

O snippet de exemplo de entrega de mensagens no Script Lab.

Observação

A partir da versão 115 de navegadores baseados em Chromium, como Chrome e Edge, a partição de armazenamento está sendo testada para impedir o rastreamento entre sites de canal lateral específico (consulte também políticas de navegador do Microsoft Edge). Essa alteração está impedindo que Script Lab snippets sejam executados em Outlook na Web. Para contornar isso, acesse chrome://flags ou edge://flags no navegador e defina o sinalizador Desabilitado de Partição de Armazenamento de Terceiros (#third-armazenamento-particionamento).

Confira também