Office.Mailbox interface

提供对 Microsoft Outlook 外接程序对象模型的访问权限。

键属性:

  • diagnostics:向 Outlook 加载项提供诊断信息。

  • item:提供用于在 Outlook 外接程序中访问邮件或约会的方法和属性。

  • userProfile:提供有关 Outlook 外接程序中用户的信息。

注解

最低权限级别受限

适用的 Outlook 模式:撰写或阅读

属性

diagnostics

将诊断信息提供给 Outlook 外接程序。

包含以下成员。

  • hostName (字符串) :表示 Office 应用程序名称的字符串。 它应为以下值之一:OutlookOutlookWebAppOutlookIOS 或 。OutlookAndroid 注意:桌面客户端上的 Outlook 将返回“Outlook”值, (即 Windows 和 Mac) 。

  • hostVersion (字符串) :表示 Office 应用程序或Exchange Server (版本的字符串,例如“15.0.468.0”) 。 如果邮件加载项在桌面或移动客户端上的 Outlook 中运行,则 hostVersion 属性将返回应用程序版本 Outlook。 在 Outlook 网页版 中, 属性返回Exchange Server的版本。

  • OWAViewMailboxEnums.OWAView (或字符串) :表示Outlook 网页版当前视图的枚举 (或字符串文本) 。 如果未Outlook 网页版应用程序,则访问此属性会导致未定义。 Outlook 网页版有三种视图,OneColumn (在屏幕较窄时显示; TwoColumns 当屏幕较宽ThreeColumns时显示;当屏幕较宽时显示;当屏幕宽) (对应于屏幕和窗口的宽度)以及可显示的列数时显示。

有关详细信息,请参阅 Office.Diagnostics

ewsUrl

获取此电子邮件帐户的 Exchange Web Services (EWS) 终点的 URL。

item

邮箱项。 根据打开加载项的上下文,项类型可能会有所不同。 如果只想查看特定类型或模式的 IntelliSense,请将此项转换为以下项之一:

MessageComposeMessageReadAppointmentComposeAppointmentRead

重要提示item 如果加载项支持固定任务窗格,可以为 null。 有关如何处理的详细信息,请参阅 在 Outlook 中实现可固定的任务窗格。

masterCategories

获取一个 对象,该对象提供用于管理与邮箱关联的类别主列表的方法。

restUrl

获取此电子邮件帐户的 REST 终结点的 URL。

应用必须具有在其清单中指定的 读取项 权限,才能在读取模式下调用 restUrl 成员。

在撰写模式中,必须调用 saveAsync 方法,才能使用 restUrl 成员。 你的应用必须具有 读取/写入项 权限才能调用 saveAsync 方法。

但是,在委托或共享方案中,应改用 targetRestUrl 要求集 1.8) 中引入 (SharedProperties 对象的 属性。 有关详细信息,请参阅 委托访问 一文。

userProfile

有关与邮箱关联的用户的信息。 这包括其帐户类型、显示名称、电子邮件地址和时区。

有关详细信息,请参阅 Office.UserProfile

方法

addHandlerAsync(eventType, handler, options, callback)

添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

addHandlerAsync(eventType, handler, callback)

添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

convertToEwsId(id, restVersion)

将支持的 ID 转换为 Exchange Web Services (EWS) 格式。

convertToLocalClientTime(timeValue)

获取包含以本地客户端时间表示的时间信息的字典。

邮件应用用于Outlook 网页版或桌面客户端的日期和时间可以使用不同的时区。 Outlook 使用客户端计算机时区;Outlook 网页版使用 Exchange 管理员 中心 (EAC) 设置的时区。 应对日期和时间值进行处理,以便用户界面上显示的值始终与用户预期的时区一致。

如果邮件应用在桌面客户端上的 Outlook 中运行,该方法 convertToLocalClientTime 将返回一个字典对象,其值设置为客户端计算机时区。 如果邮件应用在 Outlook 网页版 中运行,该方法convertToLocalClientTime将返回一个字典对象,其值设置为 EAC 中指定的时区。

convertToRestId(id, restVersion)

将支持的 ID 转换为 REST 格式。

convertToUtcClientTime(input)

Date从包含时间信息的字典中获取对象。

方法 convertToUtcClientTime 将包含本地日期和时间 Date 的字典转换为具有本地日期和时间的正确值的对象。

displayAppointmentForm(itemId)

显示现有日历约会。

方法 displayAppointmentForm 在桌面上的新窗口中打开现有的日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

displayAppointmentFormAsync(itemId, options, callback)

显示现有日历约会。

displayAppointmentFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayAppointmentFormAsync(itemId, callback)

显示现有日历约会。

displayAppointmentFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayMessageForm(itemId)

显示现有邮件。

方法 displayMessageForm 在桌面上的新窗口中打开现有消息。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

displayMessageFormAsync(itemId, options, callback)

显示现有邮件。

displayMessageFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有邮件。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

不要将 displayMessageFormdisplayMessageFormAsync 方法与表示约会的 itemId 一起使用。 displayAppointmentForm使用 或 displayAppointmentFormAsync 方法可显示现有约会,或 displayNewAppointmentFormdisplayNewAppointmentFormAsync 显示窗体以创建新约会。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayMessageFormAsync(itemId, callback)

显示现有邮件。

displayMessageFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有邮件。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

不要将 displayMessageFormdisplayMessageFormAsync 方法与表示约会的 itemId 一起使用。 displayAppointmentForm使用 或 displayAppointmentFormAsync 方法可显示现有约会,或 displayNewAppointmentFormdisplayNewAppointmentFormAsync 显示窗体以创建新约会。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayNewAppointmentForm(parameters)

显示用于新建日历约会的表单。

displayNewAppointmentForm 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果未将任何与会者指定为输入参数,该方法将显示带有 “保存 ”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewAppointmentFormAsync(parameters, options, callback)

显示用于新建日历约会的表单。

displayNewAppointmentFormAsync 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果你未将任何与会者指定为输入参数,该方法将显示为一个包含“保存”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayNewAppointmentFormAsync(parameters, callback)

显示用于新建日历约会的表单。

displayNewAppointmentFormAsync 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果你未将任何与会者指定为输入参数,该方法将显示为一个包含“保存”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayNewMessageForm(parameters)

显示用于创建新邮件的窗体。

方法 displayNewMessageForm 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewMessageFormAsync(parameters, options, callback)

显示用于创建新邮件的窗体。

方法 displayNewMessageFormAsync 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewMessageFormAsync(parameters, callback)

显示用于创建新邮件的窗体。

方法 displayNewMessageFormAsync 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

getCallbackTokenAsync(options, callback)

获取一个字符串,该字符串包含用于调用 REST API 或 Exchange Web Services (EWS) 的令牌。

getCallbackTokenAsync 方法进行异步调用,从托管用户邮箱的 Exchange Server 获取非跳转令牌。 回调令牌的生存期为 5 分钟。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

getCallbackTokenAsync(callback, userContext)

获取一个字符串,其中包含用于从 Exchange Server 获取附件或项目的令牌。

getCallbackTokenAsync 方法进行异步调用,从托管用户邮箱的 Exchange Server 获取非跳转令牌。 回调令牌的生存期为 5 分钟。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

getUserIdentityTokenAsync(callback, userContext)

获取用于标识用户和 Office 外接程序的令牌。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

makeEwsRequestAsync(data, callback, userContext)

在托管用户邮箱的 Exchange 服务器上向 Exchange Web Services 发出异步请求 (EWS) 服务。

makeEwsRequestAsync 方法代表加载项将 EWS 请求发送到 Exchange。

removeHandlerAsync(eventType, options, callback)

删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

removeHandlerAsync(eventType, callback)

删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

属性详细信息

diagnostics

将诊断信息提供给 Outlook 外接程序。

包含以下成员。

  • hostName (字符串) :表示 Office 应用程序名称的字符串。 它应为以下值之一:OutlookOutlookWebAppOutlookIOS 或 。OutlookAndroid 注意:桌面客户端上的 Outlook 将返回“Outlook”值, (即 Windows 和 Mac) 。

  • hostVersion (字符串) :表示 Office 应用程序或Exchange Server (版本的字符串,例如“15.0.468.0”) 。 如果邮件加载项在桌面或移动客户端上的 Outlook 中运行,则 hostVersion 属性将返回应用程序版本 Outlook。 在 Outlook 网页版 中, 属性返回Exchange Server的版本。

  • OWAViewMailboxEnums.OWAView (或字符串) :表示Outlook 网页版当前视图的枚举 (或字符串文本) 。 如果未Outlook 网页版应用程序,则访问此属性会导致未定义。 Outlook 网页版有三种视图,OneColumn (在屏幕较窄时显示; TwoColumns 当屏幕较宽ThreeColumns时显示;当屏幕较宽时显示;当屏幕宽) (对应于屏幕和窗口的宽度)以及可显示的列数时显示。

有关详细信息,请参阅 Office.Diagnostics

diagnostics: Diagnostics;

属性值

注解

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

从邮箱要求集 1.5 开始,还可以使用 Office.context.诊断 属性获取类似信息。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/90-other-item-apis/get-diagnostic-information.yaml

// This function gets a mailbox's diagnostic information, such as Outlook client and version, and logs it to the console.
const diagnostics = Office.context.mailbox.diagnostics;
console.log(`Client application: ${diagnostics.hostName}`);
console.log(`Client version: ${diagnostics.hostVersion}`);

switch (diagnostics.OWAView) {
  case undefined:
    console.log("Current view (Outlook on the web only): Not applicable. An Outlook desktop client is in use.");
    break;
  case Office.MailboxEnums.OWAView.OneColumnNarrow:
    console.log("Current view (Outlook on the web only): Viewed from an older generation mobile phone");
    break;
  case Office.MailboxEnums.OWAView.OneColumn:
    console.log("Current view (Outlook on the web only): Viewed from a newer generation mobile phone");
    break;
  case Office.MailboxEnums.OWAView.TwoColumns:
    console.log("Current view (Outlook on the web only): Viewed from a tablet");
    break;
  case Office.MailboxEnums.OWAView.ThreeColumns:
    console.log("Current view (Outlook on the web only): Viewed from a desktop computer");
    break;
}

ewsUrl

获取此电子邮件帐户的 Exchange Web Services (EWS) 终点的 URL。

ewsUrl: string;

属性值

string

注解

[ API set: Mailbox 1.1 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要说明

  • 应用必须具有在其清单中指定的 读取项 权限,才能在读取模式下调用 ewsUrl 成员。

  • 在撰写模式下,必须先调用 方法, saveAsync 然后才能使用 ewsUrl 成员。 你的应用必须具有 读取/写入项 权限才能调用 saveAsync 方法。

  • Android 版或 iOS 版 Outlook 不支持此属性。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 远程服务可使用 ewsUrl 值对用户邮箱进行 EWS 调用。 例如,可以创建一个远程服务来 从所选项获取附件。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml

console.log("EWS URL: " + Office.context.mailbox.ewsUrl);
const ewsId = Office.context.mailbox.item.itemId;
console.log("EWS item ID: " + Office.context.mailbox.item.itemId);

console.log("REST URL: " + Office.context.mailbox.restUrl);
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);

const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);

item

邮箱项。 根据打开加载项的上下文,项类型可能会有所不同。 如果只想查看特定类型或模式的 IntelliSense,请将此项转换为以下项之一:

MessageComposeMessageReadAppointmentComposeAppointmentRead

重要提示item 如果加载项支持固定任务窗格,可以为 null。 有关如何处理的详细信息,请参阅 在 Outlook 中实现可固定的任务窗格。

item?: Item & ItemCompose & ItemRead & Message & MessageCompose & MessageRead & Appointment & AppointmentCompose & AppointmentRead;

属性值

masterCategories

获取一个 对象,该对象提供用于管理与邮箱关联的类别主列表的方法。

masterCategories: MasterCategories;

属性值

注解

[ API set: Mailbox 1.8 ]

最低权限级别读/写邮箱

适用的 Outlook 模式:撰写或阅读

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/45-categories/work-with-master-categories.yaml

Office.context.mailbox.masterCategories.getAsync(function(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    const categories = asyncResult.value;
    if (categories && categories.length > 0) {
      console.log("Master categories:");
      console.log(JSON.stringify(categories));
    } else {
      console.log("There are no categories in the master list.");
    }
  } else {
    console.error(asyncResult.error);
  }
});

...

const masterCategoriesToAdd = [
  {
    displayName: "TestCategory",
    color: Office.MailboxEnums.CategoryColor.Preset0
  }
];

Office.context.mailbox.masterCategories.addAsync(masterCategoriesToAdd, function(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully added categories to master list");
  } else {
    console.log("masterCategories.addAsync call failed with error: " + asyncResult.error.message);
  }
});

...

const masterCategoriesToRemove = ["TestCategory"];

Office.context.mailbox.masterCategories.removeAsync(masterCategoriesToRemove, function(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully removed categories from master list");
  } else {
    console.log("masterCategories.removeAsync call failed with error: " + asyncResult.error.message);
  }
});

restUrl

获取此电子邮件帐户的 REST 终结点的 URL。

应用必须具有在其清单中指定的 读取项 权限,才能在读取模式下调用 restUrl 成员。

在撰写模式中,必须调用 saveAsync 方法,才能使用 restUrl 成员。 你的应用必须具有 读取/写入项 权限才能调用 saveAsync 方法。

但是,在委托或共享方案中,应改用 targetRestUrl 要求集 1.8) 中引入 (SharedProperties 对象的 属性。 有关详细信息,请参阅 委托访问 一文。

restUrl: string;

属性值

string

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

restUrl 值可用于对用户邮箱进行 REST API 调用。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/basic-rest-cors.yaml

Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
    const ewsId = Office.context.mailbox.item.itemId;
    const token = result.value;
    const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
    const getMessageUrl = Office.context.mailbox.restUrl + '/v2.0/me/messages/' + restId;
            
    const xhr = new XMLHttpRequest();
    xhr.open('GET', getMessageUrl);
    xhr.setRequestHeader("Authorization", "Bearer " + token);
    xhr.onload = function (e) {
        console.log(this.response);
    }
    xhr.send();
});

...

console.log("EWS URL: " + Office.context.mailbox.ewsUrl);
const ewsId = Office.context.mailbox.item.itemId;
console.log("EWS item ID: " + Office.context.mailbox.item.itemId);

console.log("REST URL: " + Office.context.mailbox.restUrl);
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);

const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);

userProfile

有关与邮箱关联的用户的信息。 这包括其帐户类型、显示名称、电子邮件地址和时区。

有关详细信息,请参阅 Office.UserProfile

userProfile: UserProfile;

属性值

方法详细信息

addHandlerAsync(eventType, handler, options, callback)

添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

addHandlerAsync(eventType: Office.EventType | string, handler: any, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

eventType

Office.EventType | string

应调用处理程序的事件。

handler

any

用于处理事件的函数。 此函数必须接受一个参数,即对象文本。 参数type上的 属性将与传递给 addHandlerAsync的参数匹配eventType

options
Office.AsyncContextOptions

提供一个选项,用于保留任何类型的上下文数据(不变),以便在回调中使用。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用类型的Office.AsyncResult单个参数调用在 参数中callback传递的函数。

返回

void

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

示例

Office.initialize = function (reason) {
    $(document).ready(function () {
        Office.context.mailbox.addHandlerAsync(
            Office.EventType.ItemChanged,
            loadNewItem,
            function (result) {
                if (result.status === Office.AsyncResultStatus.Failed) {
                    // Handle error.
                }
            });
    });
};

function loadNewItem(eventArgs) {
    const item = Office.context.mailbox.item;

    // Check that item is not null.
    if (item !== null) {
        // Work with item, e.g., define and call function that
        // loads the properties of the newly selected item.
        loadProps(item);
    }
}

addHandlerAsync(eventType, handler, callback)

添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

addHandlerAsync(eventType: Office.EventType | string, handler: any, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

eventType

Office.EventType | string

应调用处理程序的事件。

handler

any

用于处理事件的函数。 此函数必须接受一个参数,即对象文本。 参数type上的 属性将与传递给 addHandlerAsync的参数匹配eventType

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用类型的Office.AsyncResult单个参数调用在 参数中callback传递的函数。

返回

void

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

convertToEwsId(id, restVersion)

将支持的 ID 转换为 Exchange Web Services (EWS) 格式。

convertToEwsId(id: string, restVersion: MailboxEnums.RestVersion | string): string;

参数

id

string

要转换为 EWS 格式的 ID。 此字符串可以是为 Outlook REST API 设置格式的项目 ID,也可以是从 中检索到 Office.context.mailbox.item.conversationId的对话 ID。

restVersion

Office.MailboxEnums.RestVersion | string

指示用于检索项目 ID 的 Outlook REST API 的版本。

返回

string

注解

[ API 集:邮箱 1.3 ]

最低权限级别受限

适用的 Outlook 模式:撰写或阅读

重要说明

  • Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 通过 REST API 检索的项目 ID ((如 Outlook 邮件 API 或 Microsoft Graph) 使用的格式与 EWS 使用的格式不同)。 方法将 REST 格式化的 ID 转换为正确的 EWS 格式。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml

console.log("EWS URL: " + Office.context.mailbox.ewsUrl);
const ewsId = Office.context.mailbox.item.itemId;
console.log("EWS item ID: " + Office.context.mailbox.item.itemId);

console.log("REST URL: " + Office.context.mailbox.restUrl);
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);

const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);

convertToLocalClientTime(timeValue)

获取包含以本地客户端时间表示的时间信息的字典。

邮件应用用于Outlook 网页版或桌面客户端的日期和时间可以使用不同的时区。 Outlook 使用客户端计算机时区;Outlook 网页版使用 Exchange 管理员 中心 (EAC) 设置的时区。 应对日期和时间值进行处理,以便用户界面上显示的值始终与用户预期的时区一致。

如果邮件应用在桌面客户端上的 Outlook 中运行,该方法 convertToLocalClientTime 将返回一个字典对象,其值设置为客户端计算机时区。 如果邮件应用在 Outlook 网页版 中运行,该方法convertToLocalClientTime将返回一个字典对象,其值设置为 EAC 中指定的时区。

convertToLocalClientTime(timeValue: Date): LocalClientTime;

参数

timeValue

Date

Date 对象。

返回

注解

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

convertToRestId(id, restVersion)

将支持的 ID 转换为 REST 格式。

convertToRestId(id: string, restVersion: MailboxEnums.RestVersion | string): string;

参数

id

string

要转换为 REST 格式的 ID。 此字符串可以是为通常从 Office.context.mailbox.item.itemId检索的 EWS 设置格式的项目 ID、从Office.context.mailbox.item.conversationId 中检索的对话 ID 或从 Office.context.mailbox.item.seriesId检索到的系列 ID。

restVersion

Office.MailboxEnums.RestVersion | string

一个 值,该值指示与转换后的 ID 一起使用的 Outlook REST API 的版本。

返回

string

注解

[ API 集:邮箱 1.3 ]

最低权限级别受限

适用的 Outlook 模式:撰写或阅读

重要说明

  • Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 通过 Exchange Web Services (EWS) 或通过 itemId 属性检索的项目 ID 使用的格式与 REST API ((如 Outlook 邮件 APIMicrosoft Graph) )使用的格式不同。 方法将 EWS 格式化的 ID 转换为正确的 REST 格式。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/basic-rest-cors.yaml

Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
    const ewsId = Office.context.mailbox.item.itemId;
    const token = result.value;
    const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
    const getMessageUrl = Office.context.mailbox.restUrl + '/v2.0/me/messages/' + restId;
            
    const xhr = new XMLHttpRequest();
    xhr.open('GET', getMessageUrl);
    xhr.setRequestHeader("Authorization", "Bearer " + token);
    xhr.onload = function (e) {
        console.log(this.response);
    }
    xhr.send();
});

...

console.log("EWS URL: " + Office.context.mailbox.ewsUrl);
const ewsId = Office.context.mailbox.item.itemId;
console.log("EWS item ID: " + Office.context.mailbox.item.itemId);

console.log("REST URL: " + Office.context.mailbox.restUrl);
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);

const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);

convertToUtcClientTime(input)

Date从包含时间信息的字典中获取对象。

方法 convertToUtcClientTime 将包含本地日期和时间 Date 的字典转换为具有本地日期和时间的正确值的对象。

convertToUtcClientTime(input: LocalClientTime): Date;

参数

input
Office.LocalClientTime

要转换的本地时间值。

返回

Date

包含以 UTC 表示的时间的 Date 对象。

注解

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

示例

// Represents 3:37 PM PDT on Monday, August 26, 2019.
const input = {
    date: 26,
    hours: 15,
    milliseconds: 2,
    minutes: 37,
    month: 7,
    seconds: 2,
    timezoneOffset: -420,
    year: 2019
};

// result should be a Date object.
const result = Office.context.mailbox.convertToUtcClientTime(input);

// Output should be "2019-08-26T22:37:02.002Z".
console.log(result.toISOString());

displayAppointmentForm(itemId)

显示现有日历约会。

方法 displayAppointmentForm 在桌面上的新窗口中打开现有的日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

displayAppointmentForm(itemId: string): void;

参数

itemId

string

现有日历约会的 Exchange Web 服务 (EWS) 标识符。

返回

void

注解

[ API set: Mailbox 1.1 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要提示:Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml

const itemId = $("#itemId").val();
Office.context.mailbox.displayAppointmentForm(itemId);

displayAppointmentFormAsync(itemId, options, callback)

显示现有日历约会。

displayAppointmentFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayAppointmentFormAsync(itemId: string, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

itemId

string

现有日历约会的 Exchange Web 服务 (EWS) 标识符。

options
Office.AsyncContextOptions

包含以下一个或多个属性的对象文本:- asyncContext:开发人员可以在回调函数中提供他们想要访问的任何对象。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-appointment.yaml

const itemId = $("#itemId").val();

// The async version will return error 9049 if the item is not found.
// The async version is only available starting with requirement set 1.9.
Office.context.mailbox.displayAppointmentFormAsync(itemId, function(asyncResult) {
  console.log("Result: " + JSON.stringify(asyncResult));
});

displayAppointmentFormAsync(itemId, callback)

显示现有日历约会。

displayAppointmentFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有日历约会。

在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayAppointmentFormAsync(itemId: string, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

itemId

string

现有日历约会的 Exchange Web 服务 (EWS) 标识符。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

displayMessageForm(itemId)

显示现有邮件。

方法 displayMessageForm 在桌面上的新窗口中打开现有消息。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

displayMessageForm(itemId: string): void;

参数

itemId

string

现有消息的 Exchange Web 服务 (EWS) 标识符。

返回

void

注解

[ API set: Mailbox 1.1 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要说明

  • Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 不要将 displayMessageForm 与表示约会的 itemId 一起使用。 使用 displayAppointmentForm 方法显示现有的约会,并使用 displayNewAppointmentForm 显示窗体以新建约会。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml

const itemId = $("#itemId").val();
Office.context.mailbox.displayMessageForm(itemId);

displayMessageFormAsync(itemId, options, callback)

显示现有邮件。

displayMessageFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有邮件。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

不要将 displayMessageFormdisplayMessageFormAsync 方法与表示约会的 itemId 一起使用。 displayAppointmentForm使用 或 displayAppointmentFormAsync 方法可显示现有约会,或 displayNewAppointmentFormdisplayNewAppointmentFormAsync 显示窗体以创建新约会。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayMessageFormAsync(itemId: string, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

itemId

string

现有消息的 Exchange Web 服务 (EWS) 标识符。

options
Office.AsyncContextOptions

包含以下一个或多个属性的对象文本:- asyncContext:开发人员可以在回调函数中提供他们想要访问的任何对象。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-existing-message.yaml

const itemId = $("#itemId").val();

// The async version will return error 9049 if the item is not found.
// The async version is only available starting with requirement set 1.9.
Office.context.mailbox.displayMessageFormAsync(itemId, function (asyncResult) {
 console.log("Result: " + JSON.stringify(asyncResult));
});

displayMessageFormAsync(itemId, callback)

显示现有邮件。

displayMessageFormAsync 方法将打开桌面新窗口中或移动设备对话框中的现有邮件。

在 Outlook 网页版中,仅当窗体的正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。

如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。

不要将 displayMessageFormdisplayMessageFormAsync 方法与表示约会的 itemId 一起使用。 displayAppointmentForm使用 或 displayAppointmentFormAsync 方法可显示现有约会,或 displayNewAppointmentFormdisplayNewAppointmentFormAsync 显示窗体以创建新约会。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayMessageFormAsync(itemId: string, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

itemId

string

现有消息的 Exchange Web 服务 (EWS) 标识符。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

displayNewAppointmentForm(parameters)

显示用于新建日历约会的表单。

displayNewAppointmentForm 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果未将任何与会者指定为输入参数,该方法将显示带有 “保存 ”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewAppointmentForm(parameters: AppointmentForm): void;

参数

parameters
Office.AppointmentForm

描述 AppointmentForm 新约会的 。 所有属性都是可选的。

返回

void

注解

[ API set: Mailbox 1.1 ]

最低权限级别读取项

适用的 Outlook 模式:读取

重要提示:Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-appointment.yaml

const start = new Date();
const end = new Date();
end.setHours(start.getHours() + 1);

Office.context.mailbox.displayNewAppointmentForm({
  requiredAttendees: ["bob@contoso.com"],
  optionalAttendees: ["sam@contoso.com"],
  start: start,
  end: end,
  location: "Home",
  subject: "meeting",
  resources: ["projector@contoso.com"],
  body: "Hello World!"
});

displayNewAppointmentFormAsync(parameters, options, callback)

显示用于新建日历约会的表单。

displayNewAppointmentFormAsync 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果你未将任何与会者指定为输入参数,该方法将显示为一个包含“保存”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayNewAppointmentFormAsync(parameters: AppointmentForm, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

parameters
Office.AppointmentForm

描述 AppointmentForm 新约会的 。 所有属性都是可选的。

options
Office.AsyncContextOptions

包含以下一个或多个属性的对象文本:- asyncContext:开发人员可以在回调函数中提供他们想要访问的任何对象。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:读取

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-appointment.yaml

const start = new Date();
const end = new Date();
end.setHours(start.getHours() + 1);

// The async version is only available starting with requirement set 1.9,
// and provides a callback when the new appointment form has been created.
Office.context.mailbox.displayNewAppointmentFormAsync(
  {
    requiredAttendees: ["bob@contoso.com"],
    optionalAttendees: ["sam@contoso.com"],
    start: start,
    end: end,
    location: "Home",
    subject: "meeting",
    resources: ["projector@contoso.com"],
    body: "Hello World!"
  },
  function(asyncResult) {
    console.log(JSON.stringify(asyncResult));
  }
);

displayNewAppointmentFormAsync(parameters, callback)

显示用于新建日历约会的表单。

displayNewAppointmentFormAsync 方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。

在 Outlook 网页版 中,此方法始终显示包含与会者字段的窗体。 如果你未将任何与会者指定为输入参数,该方法将显示为一个包含“保存”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。

在 Outlook 富客户端和 Outlook RT 中,如果在 、optionalAttendees 或 参数中requiredAttendees指定了任何与会者或resources资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

注意:iOS 或 Android 版 Outlook 不支持此方法。

displayNewAppointmentFormAsync(parameters: AppointmentForm, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

parameters
Office.AppointmentForm

描述 AppointmentForm 新约会的 。 所有属性都是可选的。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:读取

displayNewMessageForm(parameters)

显示用于创建新邮件的窗体。

方法 displayNewMessageForm 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewMessageForm(parameters: any): void;

参数

parameters

any

包含新窗体中用户要填写的所有值的字典。 所有参数都是可选的。

toRecipients:包含电子邮件地址的字符串数组,或包含“收件人”行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

ccRecipients:包含电子邮件地址的字符串数组,或包含抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

bccRecipients:包含电子邮件地址的字符串数组,或包含密件抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

subject:包含消息主题的字符串。 字符串长度限制为最多 255 个字符。

htmlBody:邮件的 HTML 正文。 正文内容限制为最大 32 KB。

attachments:作为文件或项目附件的 JSON 对象的数组。

attachments.type:指示附件的类型。 必须是文件附件的文件或项目附件的项。

attachments.name:包含附件名称的字符串,长度最多为 255 个字符。

attachments.url:仅在 type 设置为 file 时才使用。 文件的位置的 URI。 重要提示:此链接必须可公开访问,而无需Exchange Online服务器进行身份验证。 但是,使用本地 Exchange 时,只要不需要进一步身份验证,就可以在专用网络上访问链接。

attachments.isInline:仅在 type 设置为 file 时才使用。 如果为 true,则表示附件将在邮件正文中内联显示,不应显示在附件列表中。

attachments.itemId:仅在 type 设置为 item 时才使用。 要附加到新邮件的现有电子邮件的 EWS 项 ID。 字符串最长为 100 个字符。

返回

void

注解

[ API set: Mailbox 1.6 ]

最低权限级别读取项

适用的 Outlook 模式:读取

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-message.yaml

Office.context.mailbox.displayNewMessageForm({
  toRecipients: Office.context.mailbox.item.to, // Copies the To line from current item
  ccRecipients: ["sam@contoso.com"],
  subject: "Outlook add-ins are cool!",
  htmlBody: 'Hello <b>World</b>!<br/><img src="cid:image.png"></i>',
  attachments: [
    {
      type: "file",
      name: "image.png",
      url: "http://www.cutestpaw.com/wp-content/uploads/2011/11/Cute-Black-Dogs-s.jpg",
      isInline: true
    }
  ]
});

displayNewMessageFormAsync(parameters, options, callback)

显示用于创建新邮件的窗体。

方法 displayNewMessageFormAsync 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewMessageFormAsync(parameters: any, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

parameters

any

包含新窗体中用户要填写的所有值的字典。 所有参数都是可选的。

toRecipients:包含电子邮件地址的字符串数组,或包含“收件人”行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

ccRecipients:包含电子邮件地址的字符串数组,或包含抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

bccRecipients:包含电子邮件地址的字符串数组,或包含密件抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

subject:包含消息主题的字符串。 字符串长度限制为最多 255 个字符。

htmlBody:邮件的 HTML 正文。 正文内容限制为最大 32 KB。

attachments:作为文件或项目附件的 JSON 对象的数组。

attachments.type:指示附件的类型。 必须是文件附件的文件或项目附件的项。

attachments.name:包含附件名称的字符串,长度最多为 255 个字符。

attachments.url:仅在 type 设置为 file 时才使用。 文件的位置的 URI。 重要提示:此链接必须可公开访问,而无需Exchange Online服务器进行身份验证。 但是,使用本地 Exchange 时,只要不需要进一步身份验证,就可以在专用网络上访问链接。

attachments.isInline:仅在 type 设置为 file 时才使用。 如果为 true,则表示附件将在邮件正文中内联显示,不应显示在附件列表中。

attachments.itemId:仅在 type 设置为 item 时才使用。 要附加到新邮件的现有电子邮件的 EWS 项 ID。 字符串最长为 100 个字符。

options
Office.AsyncContextOptions

包含以下一个或多个属性的对象文本:- asyncContext:开发人员可以在回调函数中提供他们想要访问的任何对象。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:读取

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/55-display-items/display-new-message.yaml

// The async version is only available starting with requirement set 1.9,
// and provides a callback when the new message form has been created.
Office.context.mailbox.displayNewMessageFormAsync(
  {
    toRecipients: Office.context.mailbox.item.to, // Copies the To line from current item
    ccRecipients: ["sam@contoso.com"],
    subject: "Outlook add-ins are cool!",
    htmlBody: 'Hello <b>World</b>!<br/><img src="cid:image.png"></i>',
    attachments: [
      {
        type: "file",
        name: "image.png",
        url: "http://www.cutestpaw.com/wp-content/uploads/2011/11/Cute-Black-Dogs-s.jpg",
        isInline: true
      }
    ]
  },
  function(asyncResult) {
    console.log(JSON.stringify(asyncResult));
  }
);

displayNewMessageFormAsync(parameters, callback)

显示用于创建新邮件的窗体。

方法 displayNewMessageFormAsync 将打开一个窗体,使用户能够创建新邮件。 如果指定了参数,则消息窗体字段将自动填充参数的内容。

如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。

displayNewMessageFormAsync(parameters: any, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

parameters

any

包含新窗体中用户要填写的所有值的字典。 所有参数都是可选的。

toRecipients:包含电子邮件地址的字符串数组,或包含“收件人”行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

ccRecipients:包含电子邮件地址的字符串数组,或包含抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

bccRecipients:包含电子邮件地址的字符串数组,或包含密件抄送行上每个收件人的 EmailAddressDetails 对象的数组。 数组限制为最多 100 个条目。

subject:包含消息主题的字符串。 字符串长度限制为最多 255 个字符。

htmlBody:邮件的 HTML 正文。 正文内容限制为最大 32 KB。

attachments:作为文件或项目附件的 JSON 对象的数组。

attachments.type:指示附件的类型。 必须是文件附件的文件或项目附件的项。

attachments.name:包含附件名称的字符串,长度最多为 255 个字符。

attachments.url:仅在 type 设置为 file 时才使用。 文件的位置的 URI。 重要提示:此链接必须可公开访问,而无需Exchange Online服务器进行身份验证。 但是,使用本地 Exchange 时,只要不需要进一步身份验证,就可以在专用网络上访问链接。

attachments.isInline:仅在 type 设置为 file 时才使用。 如果为 true,则表示附件将在邮件正文中内联显示,不应显示在附件列表中。

attachments.itemId:仅在 type 设置为 item 时才使用。 要附加到新邮件的现有电子邮件的 EWS 项 ID。 字符串最长为 100 个字符。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。

返回

void

注解

[ API set: Mailbox 1.9 ]

最低权限级别读取项

适用的 Outlook 模式:读取

getCallbackTokenAsync(options, callback)

获取一个字符串,该字符串包含用于调用 REST API 或 Exchange Web Services (EWS) 的令牌。

getCallbackTokenAsync 方法进行异步调用,从托管用户邮箱的 Exchange Server 获取非跳转令牌。 回调令牌的生存期为 5 分钟。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

getCallbackTokenAsync(options: Office.AsyncContextOptions & { isRest?: boolean }, callback: (asyncResult: Office.AsyncResult<string>) => void): void;

参数

options

Office.AsyncContextOptions & { isRest?: boolean }

包含以下一个或多个属性的对象文本:- isRest:确定提供的令牌是否将用于 Outlook REST API 或 Exchange Web Services。 默认值为 falseasyncContext:传递给异步方法的任何状态数据。

callback

(asyncResult: Office.AsyncResult<string>) => void

方法完成后,使用类型的 Office.AsyncResult单个参数调用在回调参数中传递的函数。 令牌在 属性中 asyncResult.value 以字符串的形式返回。 如果出现错误,则 asyncResult.errorasyncResult.diagnostics 属性可能会提供其他信息。

返回

void

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要说明

  • 2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章常见问题解答页面

  • 此方法仅在 Outlook on Android 和 iOS 的读取模式下受支持。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 在 iOS 和 Android 上的 Outlook 中运行的加载项中不支持 EWS 操作。 即使 options.isRest 设置为 false,也会始终在 Outlook 移动客户端中返回 REST 令牌。

  • getCallbackTokenAsync在读取模式下调用 方法需要读取项的最低权限级别。

  • getCallbackTokenAsync在撰写模式下调用 方法需要保存项目。 方法 saveAsync 需要 读/写项的最低权限级别。

  • 有关委托或共享方案的指导,请参阅 共享文件夹和共享邮箱 一文。

REST 令牌

当 () options.isRest = true 请求 REST 令牌时,生成的令牌将无法对 EWS 调用进行身份验证。 除非加载项在其清单中指定了 读/写邮箱 权限,否则令牌的范围将限制为对当前项目及其附件的只读访问权限。 如果指定 了读/写邮箱 权限,则生成的令牌将授予对邮件、日历和联系人的读/写访问权限,包括发送邮件的能力。

在进行 REST API 调用时,外接程序应使用 restUrl 属性来确定要使用的正确 URL。

此 API 适用于以下范围。

  • Mail.ReadWrite

  • Mail.Send

  • Calendars.ReadWrite

  • Contacts.ReadWrite

EWS 令牌

当 () options.isRest = false 请求 EWS 令牌时,生成的令牌将无法对 REST API 调用进行身份验证。 令牌的作用域限制为访问当前项。

外接程序应使用 ewsUrl 属性来确定进行 EWS 调用时要使用的正确 URL。

可以将令牌和附件标识符或项标识符传递给外部系统。 该系统使用该令牌作为持有者授权令牌来调用 Exchange Web Services (EWS) GetAttachment 操作或 GetItem 操作以返回附件或项目。 例如,可以创建一个远程服务来 从所选项获取附件。

错误

  • HTTPRequestFailure:请求失败。 请查看诊断对象,了解 HTTP 错误代码。

  • InternalServerError:Exchange 服务器返回错误。 请查看诊断对象,了解详细信息。

  • NetworkError:用户不再连接到网络。 请检查网络连接并重试。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/basic-rest-cors.yaml

Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
    const ewsId = Office.context.mailbox.item.itemId;
    const token = result.value;
    const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
    const getMessageUrl = Office.context.mailbox.restUrl + '/v2.0/me/messages/' + restId;
            
    const xhr = new XMLHttpRequest();
    xhr.open('GET', getMessageUrl);
    xhr.setRequestHeader("Authorization", "Bearer " + token);
    xhr.onload = function (e) {
        console.log(this.response);
    }
    xhr.send();
});

getCallbackTokenAsync(callback, userContext)

获取一个字符串,其中包含用于从 Exchange Server 获取附件或项目的令牌。

getCallbackTokenAsync 方法进行异步调用,从托管用户邮箱的 Exchange Server 获取非跳转令牌。 回调令牌的生存期为 5 分钟。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

getCallbackTokenAsync(callback: (asyncResult: Office.AsyncResult<string>) => void, userContext?: any): void;

参数

callback

(asyncResult: Office.AsyncResult<string>) => void

方法完成后,使用类型的 Office.AsyncResult单个参数调用在回调参数中传递的函数。 令牌在 属性中 asyncResult.value 以字符串的形式返回。 如果出现错误,则 asyncResult.errorasyncResult.diagnostics 属性可能会提供其他信息。

userContext

any

可选。 传递给异步方法的任何状态数据。

返回

void

注解

[ API 集:全部支持读取模式;邮箱 1.3 引入了撰写模式支持 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要说明

  • 2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章常见问题解答页面

  • 可以将令牌和附件标识符或项标识符传递给外部系统。 该系统使用该令牌作为持有者授权令牌来调用 Exchange Web Services (EWS) GetAttachmentGetItem 操作以返回附件或项目。 例如,可以创建一个远程服务来 从所选项获取附件。

  • getCallbackTokenAsync在读取模式下调用 方法需要读取项的最低权限级别。

  • getCallbackTokenAsync在撰写模式下调用 方法需要保存项目。 方法 saveAsync 需要 读/写项的最低权限级别。

  • Android 版或 iOS 版 Outlook 不支持此方法。 在 Outlook 移动客户端上运行的外接程序中不支持 EWS 操作。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 有关委托或共享方案的指导,请参阅 共享文件夹和共享邮箱 一文。

错误

  • HTTPRequestFailure:请求失败。 请查看诊断对象,了解 HTTP 错误代码。

  • InternalServerError:Exchange 服务器返回错误。 请查看诊断对象,了解详细信息。

  • NetworkError:用户不再连接到网络。 请检查网络连接并重试。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml

Office.context.mailbox.getCallbackTokenAsync(function (result) {
    if (result.status !== Office.AsyncResultStatus.Succeeded) {
        console.error(`Token retrieval failed with message: ${result.error.message}`);
    } else {
        console.log(result.value);
    }
});

getUserIdentityTokenAsync(callback, userContext)

获取用于标识用户和 Office 外接程序的令牌。

令牌在 属性中 asyncResult.value 以字符串的形式返回。

getUserIdentityTokenAsync(callback: (asyncResult: Office.AsyncResult<string>) => void, userContext?: any): void;

参数

callback

(asyncResult: Office.AsyncResult<string>) => void

方法完成后,使用类型的 Office.AsyncResult单个参数调用在回调参数中传递的函数。 令牌在 属性中 asyncResult.value 以字符串的形式返回。 如果出现错误,则 asyncResult.errorasyncResult.diagnostics 属性可能会提供其他信息。

userContext

any

可选。 传递给异步方法的任何状态数据。

返回

void

注解

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

重要说明

错误

  • HTTPRequestFailure:请求失败。 请查看诊断对象,了解 HTTP 错误代码。

  • InternalServerError:Exchange 服务器返回错误。 请查看诊断对象,了解详细信息。

  • NetworkError:用户不再连接到网络。 请检查网络连接并重试。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml

Office.context.mailbox.getUserIdentityTokenAsync(function (result) {
    if (result.status !== Office.AsyncResultStatus.Succeeded) {
        console.error(`Token retrieval failed with message: ${result.error.message}`);
    } else {
        console.log(result.value);
    }
});

makeEwsRequestAsync(data, callback, userContext)

在托管用户邮箱的 Exchange 服务器上向 Exchange Web Services 发出异步请求 (EWS) 服务。

makeEwsRequestAsync 方法代表加载项将 EWS 请求发送到 Exchange。

makeEwsRequestAsync(data: any, callback: (asyncResult: Office.AsyncResult<string>) => void, userContext?: any): void;

参数

data

any

EWS 请求。

callback

(asyncResult: Office.AsyncResult<string>) => void

方法完成后,使用单个参数 asyncResult(即 Office.AsyncResult 对象)调用在 参数中callback传递的函数。 EWS 请求的 XML 响应在 属性中 asyncResult.value 以字符串的形式提供。 在 Outlook 网页版 中,在从版本 2303 (内部版本 16225.10000) ) 开始的 Windows (上,在从版本 16.73 (23042601) ) 开始的 Mac (上,如果响应大小超过 5 MB,则会在 属性中asyncResult.error返回错误消息。 在早期版本的 Outlook 桌面客户端中,如果响应大小超过 1 MB,则返回错误消息。

userContext

any

可选。 传递给异步方法的任何状态数据。

返回

void

注解

[ API set: Mailbox 1.1 ]

最低权限级别读/写邮箱

适用的 Outlook 模式:撰写或阅读

重要说明

  • 2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章常见问题解答页面

  • 若要使 方法能够 makeEwsRequestAsync 发出 EWS 请求,服务器管理员必须在客户端访问服务器 EWS 目录上设置为 OAuthAuthenticationtrue

  • 外接程序必须具有 读/写邮箱 权限才能使用 makeEwsRequestAsync 方法。 有关使用 读/写邮箱 权限以及可以使用 方法调用 makeEwsRequestAsync 的 EWS 操作的信息,请参阅 指定邮件加载项对用户邮箱的访问权限。

  • 如果你的外接程序需要访问文件夹关联项目或其 XML 请求必须指定 UTF-8 编码 (\<?xml version="1.0" encoding="utf-8"?\>) ,它必须使用 Microsoft Graph 或 REST API 来访问用户的邮箱。

  • Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API

  • 在 Gmail 邮箱中加载加载项时,不支持此方法。

  • makeEwsRequestAsync 版本 15.0.4535.1004 之前的 Outlook 版本中运行的外接程序中使用 方法时,必须将编码值设置为 ISO-8859-1 (<?xml version="1.0" encoding="iso-8859-1"?>) 。 若要确定 Outlook 客户端的版本,请使用 mailbox.diagnostics.hostVersion 属性。 当加载项在 Outlook 网页版 中运行时,无需设置编码值。 若要确定运行加载项的 Outlook 客户端,请使用 mailbox.diagnostics.hostName 属性。

示例

function getSubjectRequest(id) {
    // Return a GetItem operation request for the subject of the specified item.
    const request =
        '<?xml version="1.0" encoding="utf-8"?>' +
        '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
        '               xmlns:xsd="http://www.w3.org/2001/XMLSchema"' +
        '               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
        '               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
        '  <soap:Header>' +
        '    <RequestServerVersion Version="Exchange2016" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" />' +
        '  </soap:Header>' +
        '  <soap:Body>' +
        '    <GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">' +
        '      <ItemShape>' +
        '        <t:BaseShape>IdOnly</t:BaseShape>' +
        '        <t:AdditionalProperties>' +
        '            <t:FieldURI FieldURI="item:Subject"/>' +
        '        </t:AdditionalProperties>' +
        '      </ItemShape>' +
        '      <ItemIds><t:ItemId Id="' + id + '"/></ItemIds>' +
        '    </GetItem>' +
        '  </soap:Body>' +
        '</soap:Envelope>';

    return request;
}

function sendRequest() {
    // Create a local variable that contains the mailbox.
    Office.context.mailbox.makeEwsRequestAsync(
        getSubjectRequest(mailbox.item.itemId), callback);
}

function callback(asyncResult)  {
    const result = asyncResult.value;
    const context = asyncResult.asyncContext;

    // Process the returned response here.
}
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/get-icaluid-as-attendee.yaml

const ewsId = Office.context.mailbox.item.itemId;
const request = `<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header><t:RequestServerVersion Version="Exchange2013" /></soap:Header>
      <soap:Body>
        <m:GetItem>
          <m:ItemShape>
            <t:BaseShape>AllProperties</t:BaseShape>
          </m:ItemShape >
          <m:ItemIds>
            <t:ItemId Id="${ewsId}" />
          </m:ItemIds>
        </m:GetItem>
      </soap:Body>
    </soap:Envelope>`;

Office.context.mailbox.makeEwsRequestAsync(request, (result) => {
  if (result.status === Office.AsyncResultStatus.Failed) {
    console.error(result.error.message);
    return;
  }

  console.log(getUID(result.value));
});

...

const request = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
    '  <soap:Header><t:RequestServerVersion Version="Exchange2010" /></soap:Header>'+
    '  <soap:Body>'+
    '    <m:CreateItem MessageDisposition="SendAndSaveCopy">'+
    '      <m:SavedItemFolderId><t:DistinguishedFolderId Id="sentitems" /></m:SavedItemFolderId>'+
    '      <m:Items>'+
    '        <t:Message>'+
    '          <t:Subject>Hello, Outlook!</t:Subject>'+
    '          <t:Body BodyType="HTML">This message was sent from a ScriptLab code sample, used from ' + Office.context.mailbox.diagnostics.hostName + ', version ' + Office.context.mailbox.diagnostics.hostVersion + '!</t:Body>'+
    '          <t:ToRecipients>'+
    '            <t:Mailbox><t:EmailAddress>' + Office.context.mailbox.userProfile.emailAddress + '</t:EmailAddress></t:Mailbox>'+
    '          </t:ToRecipients>'+
    '        </t:Message>'+
    '      </m:Items>'+
    '    </m:CreateItem>'+
    '  </soap:Body>'+
    '</soap:Envelope>';

Office.context.mailbox.makeEwsRequestAsync(request, function (result) {
    console.log(result);
});

removeHandlerAsync(eventType, options, callback)

删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

removeHandlerAsync(eventType: Office.EventType | string, options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

eventType

Office.EventType | string

应撤销处理程序的事件。

options
Office.AsyncContextOptions

提供一个选项,用于保留任何类型的上下文数据(不变),以便在回调中使用。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用类型的Office.AsyncResult单个参数调用在 参数中callback传递的函数。

返回

void

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读

removeHandlerAsync(eventType, callback)

删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。

有关支持的事件,请参阅 Mailbox 对象模型 事件部分

removeHandlerAsync(eventType: Office.EventType | string, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;

参数

eventType

Office.EventType | string

应撤销处理程序的事件。

callback

(asyncResult: Office.AsyncResult<void>) => void

可选。 方法完成后,使用类型的Office.AsyncResult单个参数调用在 参数中callback传递的函数。

返回

void

注解

[ API 集:邮箱 1.5 ]

最低权限级别读取项

适用的 Outlook 模式:撰写或阅读