Управление датой и временем доставки сообщения

Клиент Outlook предоставляет возможность отложить доставку сообщения, но требует, чтобы outlook и устройство работали, чтобы отправить его в указанное время. С помощью API JavaScript для Office теперь можно реализовать надстройку Outlook, которая отправляет запланированные сообщения даже при закрытии клиента Outlook или отключенном устройстве. Эта возможность позволяет пользователям с удобством планировать маркетинговые кампании по электронной почте или время доставки сообщения в рабочее время коллеги или клиента.

Примечание.

Поддержка этой функции появилась в наборе требований 1.13. См клиенты и платформы, поддерживающие этот набор обязательных требований.

Настройка манифеста

Чтобы запланировать доставку сообщения, надстройка должна иметь возможность активироваться в режиме создания сообщений. Это определяется с помощью точки расширения MessageComposeCommandSurface в XML-манифесте или свойства mailCompose contexts в манифесте Unified для Microsoft 365 (предварительная версия).

Дополнительные рекомендации по настройке манифеста надстройки Outlook см. в разделе Манифесты надстроек Office.

Доступ к свойству доставки сообщения

Свойство item.delayDeliveryTime возвращает объект DelayDeliveryTime , который предоставляет методы для получения или задания даты и времени доставки сообщения.

Получение даты и времени доставки сообщения

Чтобы получить дату и время доставки сообщения в режиме создания, вызовите метод item.delayDeliveryTime.getAsync , как показано в следующем примере. Если дата доставки еще не задана для сообщения, вызов возвращает 0. В противном случае возвращается объект 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()}`);
  }
});

Установка даты и времени доставки сообщения

Чтобы отложить доставку сообщения, передайте объект JavaScript Date в качестве параметра в метод item.delayDeliveryTime.setAsync , как показано в следующем примере.

// 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.");
});

Поведение и ограничения функций

При планировании доставки сообщения с помощью item.delayDeliveryTime.setAsync метода задержка обрабатывается на сервере. Это позволяет отправлять сообщение, даже если клиент Outlook не запущен. Однако из-за этого сообщение не отображается в папке Исходящие, поэтому вы не сможете изменить сообщение или отменить его доставку после нажатия кнопки Отправить. Вы сможете просмотреть сообщение из папки Отправленные после отправки сообщения.

Это поведение отличается от сообщения, запланированного с помощью собственного параметра Задержка доставки в клиенте Outlook, который обрабатывает задержку на стороне клиента. Сообщение, запланированное с помощью этого параметра, отображается в папке Исходящие и доставляется только в том случае, если клиент Outlook, из которого оно было отправлено, работает в указанное время доставки.

Попробуйте примеры фрагментов кода в Script Lab

Получите Script Lab для надстройки Outlook и попробуйте пример фрагмента кода "Получение и настройка доставки сообщений (создание сообщений)". Дополнительные сведения о Script Lab см. в статье Изучение API JavaScript для Office с помощью Script Lab.

Фрагмент примера доставки сообщений в Script Lab.

Примечание.

Начиная с версии 115 для браузеров на основе Chromium, таких как Chrome и Edge, выполняется тестирование секционирования хранилища, чтобы предотвратить отслеживание между сайтами по боковому каналу (см. также политики браузера Microsoft Edge). Это изменение предотвращает запуск фрагментов Script Lab в Outlook в Интернете. Чтобы обойти эту проблему, перейдите в раздел chrome://flags или edge://flags в браузере, а затем установите для флага Секционирование стороннего хранилища (#third-party-storage-partitioning) значение Отключено.

См. также