管理邮件的传递日期和时间

Outlook 客户端提供延迟邮件传递的选项,但要求保持 Outlook 和设备在指定时间发送邮件。 借助 Office JavaScript API,现在可以实现一个 Outlook 加载项,即使在关闭 Outlook 客户端或关闭设备的情况下,也可以发送计划消息。 此功能为用户提供了安排电子邮件市场营销活动或在同事或客户营业时间内传递邮件的时间的便利。

注意

要求集 1.13 中引入了对此功能的支持。 请查看支持此要求集的客户端和平台

配置清单

若要计划邮件的传递,加载项必须能够在邮件撰写模式下激活。 这是通过仅外接程序清单中的 MessageComposeCommandSurface 扩展点或 Microsoft 365 统一清单中的 mailCompose“contexts”属性定义的。

有关如何配置 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 on Windows 中,邮件不会显示在 “发件箱” 文件夹中,因此在选择“ 发送”后,你将无法编辑邮件或取消邮件传递。 但是,你将能够查看“ 已发送邮件 ”文件夹中的邮件。 在 Outlook 网页版、Mac 和新的 Outlook on Windows 中,邮件将出现在“草稿”文件夹中,直到计划的送达时间为止。 虽然邮件位于 “草稿” 文件夹中,但你可以在邮件发送前对其进行编辑。

item.delayDeliveryTime.setAsync 行为不同于使用 Outlook 客户端中处理延迟客户端的本机 延迟传递 选项计划的邮件。 使用此选项安排的邮件显示在 “发件箱” 文件夹中,仅当发送邮件的 Outlook 客户端在指定的送达时间运行时才会传递。

在 Script Lab 中试用示例代码片段

获取 Outlook 加载项Script Lab,并试用“获取和设置邮件传递 (邮件Compose) ”示例代码片段。 若要了解详细信息,请参阅使用 Script Lab 探索 Office JavaScript API

Script Lab 中的消息传递示例代码段。

另请参阅