Office.Mailbox interface
提供对Microsoft Outlook 外接程序对象模型的访问权限。
键属性:
diagnostics
:向 Outlook 加载项提供诊断信息。item
:提供用于在 Outlook 外接程序中访问邮件或约会的方法和属性。userProfile
:提供有关 Outlook 外接程序中用户的信息。
注解
最低权限级别: 受限
适用的 Outlook 模式:Compose或读取
示例
Office.onReady(() => {
document.addEventListener('DOMContentLoaded', () => {
// Get a reference to the mailbox and use it to add an event handler.
const mailbox = Office.context.mailbox;
mailbox.addHandlerAsync(Office.EventType.ItemChanged, loadNewItem, (result) => {
if (result.status === Office.AsyncResultStatus.Failed) {
// Handle error.
}
});
});
});
function loadNewItem(eventArgs) {
const item = Office.context.mailbox.item;
// Check that item isn't null.
if (item !== null) {
// Work with item. For example, define and call a function that
// loads the properties of the newly selected item.
loadProps(item);
}
}
属性
diagnostics | 将诊断信息提供给 Outlook 外接程序。 包含以下成员。
有关详细信息,请参阅 Office.Diagnostics。 |
ews |
获取此电子邮件帐户的 Exchange Web Services (EWS) 终点的 URL。 |
item | 邮箱项。 根据打开加载项的上下文,项类型可能会有所不同。 如果只想查看特定类型或模式的 IntelliSense,请将此项转换为以下项之一: MessageCompose、 MessageRead、 AppointmentCompose、 AppointmentRead 重要说明:
|
master |
获取一个 对象,该对象提供用于管理与邮箱关联的类别主列表的方法。 |
rest |
获取此电子邮件帐户的 REST 终结点的 URL。 |
user |
有关与邮箱关联的用户的信息。 这包括其帐户类型、显示名称、电子邮件地址和时区。 有关详细信息,请参阅 Office.UserProfile |
方法
add |
添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。 有关支持的事件,请参阅 Mailbox 对象模型 事件部分。 |
add |
添加支持事件的事件处理程序。 注意:事件仅适用于任务窗格实现。 有关支持的事件,请参阅 Mailbox 对象模型 事件部分。 |
convert |
将支持的 ID 转换为 Exchange Web Services (EWS) 格式。 |
convert |
获取包含以本地客户端时间表示的时间信息的字典。 Outlook 客户端使用的时区因平台而异。 Windows 上的 Outlook (经典) 和 Mac 上的 Outlook 使用客户端计算机时区。 Outlook 网页版和新的 Windows 版 Outlook 使用 Exchange 管理员 Center (EAC) 上设置的时区。 应对日期和时间值进行处理,以便用户界面上显示的值始终与用户预期的时区一致。 在 Outlook on Windows (经典) 和 Mac 中, |
convert |
将支持的 ID 转换为 REST 格式。 |
convert |
方法 |
display |
显示现有日历约会。 方法 在 Outlook on Mac 中,可以使用此方法显示不属于定期系列的单个约会,或显示定期系列的主约会。 但是,无法显示序列的实例,因为无法访问属性 (包括定期序列实例的项 ID) 。 在 Outlook 网页版 和新的 Outlook on Windows 中,仅当窗体正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。 如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。 |
display |
显示现有邮件。 方法 在 Outlook 网页版 和新的 Outlook on Windows 中,仅当窗体正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。 如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。 |
display |
显示用于新建日历约会的表单。
在 Outlook 网页版 和新的 Outlook on Windows 中,此方法始终显示包含与会者字段的窗体。 如果未将任何与会者指定为输入参数,该方法将显示带有 “保存 ”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。 在 Outlook on Windows (经典) 和 Mac 中,如果在 、 如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。 |
display |
显示用于创建新邮件的窗体。 方法 如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。 |
get |
获取一个字符串,该字符串包含用于调用 REST API 或 Exchange Web Services (EWS) 的令牌。
令牌在 属性中 |
get |
获取一个字符串,其中包含用于从 Exchange Server 获取附件或项目的令牌。
令牌在 属性中 |
get |
获取用于标识用户和 Office 外接程序的令牌。 令牌在 属性中 |
make |
在托管用户邮箱的 Exchange 服务器上向 Exchange Web Services 发出异步请求 (EWS) 服务。
|
remove |
删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。 有关支持的事件,请参阅 Mailbox 对象模型 事件部分。 |
remove |
删除受支持事件类型的事件处理程序。 注意:事件仅适用于任务窗格实现。 有关支持的事件,请参阅 Mailbox 对象模型 事件部分。 |
属性详细信息
diagnostics
将诊断信息提供给 Outlook 外接程序。
包含以下成员。
hostName
(字符串) :表示 Office 应用程序名称的字符串。 它应为以下值之一:Outlook
、newOutlookWindows
、OutlookWebApp
、OutlookIOS
或 。OutlookAndroid
注意:Windows 上的 Outlook (经典) 和 Mac 上返回“Outlook”值。hostVersion
(字符串) :表示 Office 应用程序或Exchange Server (版本的字符串,例如“15.0.468.0”) 。 如果邮件加载项在 Outlook on Windows (经典) 、Mac 或移动设备中运行,则hostVersion
属性将返回 Outlook 客户端的版本。 在 Outlook 网页版 和新的 Outlook on Windows 中, 属性返回Exchange Server的版本。OWAView
MailboxEnums.OWAView
(或字符串) :表示Outlook 网页版当前视图的枚举 (或字符串文本) 。 如果未Outlook 网页版应用程序,则访问此属性会导致未定义。 Outlook 网页版有三种视图,OneColumn
(在屏幕较窄时显示;TwoColumns
当屏幕较宽ThreeColumns
时显示;当屏幕较宽时显示;当屏幕宽) (对应于屏幕和窗口的宽度)以及可显示的列数时显示。
有关详细信息,请参阅 Office.Diagnostics。
diagnostics: Diagnostics;
属性值
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
从邮箱要求集 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
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
应用必须具有在其清单中指定的 读取项 权限,才能在读取模式下调用
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
// Get the EWS URL and EWS item ID.
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);
// Convert the EWS item ID to a REST-formatted ID.
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);
// Convert the REST-formatted ID back to an EWS-formatted ID.
const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);
item
邮箱项。 根据打开加载项的上下文,项类型可能会有所不同。 如果只想查看特定类型或模式的 IntelliSense,请将此项转换为以下项之一:
MessageCompose、 MessageRead、 AppointmentCompose、 AppointmentRead
重要说明:
在邮件上调用
Office.context.mailbox.item
时,请注意,必须打开 Outlook 客户端中的阅读窗格。 有关如何配置阅读窗格的指南,请参阅 使用和配置阅读窗格预览邮件。item
如果加载项支持固定任务窗格,可以为 null。 有关如何处理的详细信息,请参阅 在 Outlook 中实现可固定的任务窗格。
item?: Item & ItemCompose & ItemRead & Message & MessageCompose & MessageRead & Appointment & AppointmentCompose & AppointmentRead;
属性值
masterCategories
获取一个 对象,该对象提供用于管理与邮箱关联的类别主列表的方法。
masterCategories: MasterCategories;
属性值
注解
最低权限级别: 读/写邮箱
适用的 Outlook 模式:Compose或读取
示例
// 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: string;
属性值
string
注解
[ API 集:邮箱 1.5 ]
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
Outlook REST v2.0 和 beta 终结点现已弃用。 但是,在 2025 年 10 月 14 日 Outlook 2019 的扩展支持结束之前,私下发布的加载项和 AppSource 托管的加载项可以使用 REST 服务。 将自动标识来自这些加载项的流量以免除。 此豁免也适用于 2024 年 3 月 31 日之后开发的新加载项。 尽管加载项能够在 2025 年之前使用 REST 服务,但我们强烈建议你迁移加载项以使用 Microsoft Graph。 有关指导,请参阅 比较 Microsoft Graph 和 Outlook REST API 终结点。
外接程序必须具有在其清单中指定的 读取项 权限,才能在读取模式下调用
restUrl
成员。在撰写模式中,必须调用
saveAsync
方法,才能使用restUrl
成员。 外接程序必须具有 读取/写入项 权限才能调用saveAsync
方法。 但是,在委托或共享方案中,应改用targetRestUrl
要求集 1.8) 中引入 (SharedProperties 对象的 属性。 有关详细信息,请参阅 共享文件夹和共享邮箱 一文。
示例
// Get the URL of the REST endpoint.
const restUrl = Office.context.mailbox.restUrl;
console.log(`REST API URL: ${restUrl}`);
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 模式:Compose或读取
示例
Office.onReady(() => {
document.addEventListener('DOMContentLoaded', () => {
// Get a reference to the mailbox and use it to add an event handler.
const mailbox = Office.context.mailbox;
mailbox.addHandlerAsync(Office.EventType.ItemChanged, loadNewItem, (result) => {
if (result.status === Office.AsyncResultStatus.Failed) {
// Handle error.
}
});
});
});
function loadNewItem(eventArgs) {
const item = Office.context.mailbox.item;
// Check that item isn't null.
if (item !== null) {
// Work with item. For example, define and call a 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 模式:Compose或读取
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 模式:Compose或读取
重要说明:
2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识和回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章 和 常见问题解答页面。
Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
通过 REST API ((如 Microsoft Graph )检索的项 ID) 使用的格式与 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
// Get the EWS URL and EWS item ID.
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);
// Convert the EWS item ID to a REST-formatted ID.
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);
// Convert the REST-formatted ID back to an EWS-formatted ID.
const ewsId2 = Office.context.mailbox.convertToEwsId(restId, Office.MailboxEnums.RestVersion.v2_0);
console.log("EWS ID (from REST ID): " + ewsId2);
convertToLocalClientTime(timeValue)
获取包含以本地客户端时间表示的时间信息的字典。
Outlook 客户端使用的时区因平台而异。 Windows 上的 Outlook (经典) 和 Mac 上的 Outlook 使用客户端计算机时区。 Outlook 网页版和新的 Windows 版 Outlook 使用 Exchange 管理员 Center (EAC) 上设置的时区。 应对日期和时间值进行处理,以便用户界面上显示的值始终与用户预期的时区一致。
在 Outlook on Windows (经典) 和 Mac 中, convertToLocalClientTime
该方法返回一个字典对象,其值设置为客户端计算机时区。 在 Outlook 网页版 和新的 Outlook on Windows 中,convertToLocalClientTime
该方法返回一个字典对象,其值设置为 EAC 中指定的时区。
convertToLocalClientTime(timeValue: Date): LocalClientTime;
参数
- timeValue
-
Date
Date
对象。
返回
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
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 模式:Compose或读取
重要说明:
Android 版或 iOS 版 Outlook 不支持此方法。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
通过 Exchange Web Services (EWS) 或通过
itemId
属性检索的项 ID 使用的格式与 REST API ((如 Microsoft Graph) )使用的格式不同。 方法将 EWS 格式化的 ID 转换为正确的 REST 格式。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml
// Get the EWS URL and EWS item ID.
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);
// Convert the EWS item ID to a REST-formatted ID.
const restId = Office.context.mailbox.convertToRestId(ewsId, Office.MailboxEnums.RestVersion.v2_0);
console.log("REST item ID: " + restId);
// Convert the REST-formatted ID back to an EWS-formatted ID.
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 模式:Compose或读取
示例
// 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 网页版 和新的 Outlook on Windows 中,仅当窗体正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。
如果指定的项目标识符未标识现有约会,则会在客户端计算机或设备上打开一个空白窗格,并且不会返回错误消息。
displayAppointmentForm(itemId: string): void;
参数
- itemId
-
string
现有日历约会的 Exchange Web 服务 (EWS) 标识符。
返回
void
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要提示: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);
displayMessageForm(itemId)
显示现有邮件。
方法 displayMessageForm
在桌面上的新窗口中打开现有消息。
在 Outlook 网页版 和新的 Outlook on Windows 中,仅当窗体正文小于或等于 32K 个字符时,此方法才会打开指定的窗体。
如果指定的项标识符未标识现有消息,则客户端计算机上不会显示任何消息,并且不会返回错误消息。
displayMessageForm(itemId: string): void;
参数
- itemId
-
string
现有消息的 Exchange Web 服务 (EWS) 标识符。
返回
void
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
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);
displayNewAppointmentForm(parameters)
显示用于新建日历约会的表单。
displayNewAppointmentForm
方法打开可让用户新建约会或会议的窗体。 如果指定了参数,将使用参数的内容自动填充约会窗体字段。
在 Outlook 网页版 和新的 Outlook on Windows 中,此方法始终显示包含与会者字段的窗体。 如果未将任何与会者指定为输入参数,该方法将显示带有 “保存 ”按钮的窗体。 如果已指定与会者,窗体将包含与会者和“发送”按钮。
在 Outlook on Windows (经典) 和 Mac 中,如果在 、optionalAttendees
或 参数中requiredAttendees
指定了任何与会者或resources
资源,此方法将显示带有“发送”按钮的会议窗体。 如果未指定任何收件人,此方法将显示一个包含“保存并关闭”按钮的约会窗体。
如果任何参数超过指定大小限制,或者指定了未知参数名称,则会引发异常。
displayNewAppointmentForm(parameters: AppointmentForm): void;
参数
- parameters
- Office.AppointmentForm
描述 AppointmentForm
新约会的 。 所有属性都是可选的。
返回
void
注解
最低权限级别: 读取项
重要提示: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!"
});
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
:指示附件的类型。 必须是文件附件的 file
或项目附件的 item
。
attachments.name
:包含附件名称的字符串,长度最多为 255 个字符。
attachments.url
:仅在附件类型设置为 file
时使用。 文件的位置的 URI。
重要提示:此链接必须可公开访问,而无需Exchange Online服务器进行身份验证。 但是,使用本地 Exchange 时,只要不需要进一步身份验证,就可以在专用网络上访问链接。
attachments.isInline
:仅在附件类型设置为 file
时使用。 如果为 true,则指示附件将以内联方式显示为邮件正文中的图像,并且不会显示在附件列表中。
attachments.itemId
:仅在附件类型设置为 item
时使用。 要附加到新邮件的现有电子邮件的 EWS 项 ID。 字符串最长为 100 个字符。
返回
void
注解
最低权限级别: 读取项
示例
// 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: "https://i.imgur.com/9S36xvA.jpg",
isInline: true
}
]
});
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。 默认值为 false
。
asyncContext
:传递给异步方法的任何状态数据。
- callback
-
(asyncResult: Office.AsyncResult<string>) => void
方法完成后,使用类型的 Office.AsyncResult
单个参数调用在回调参数中传递的函数。 令牌在 属性中 asyncResult.value
以字符串的形式返回。 如果出现错误,则 asyncResult.error
和 asyncResult.diagnostics
属性可能会提供其他信息。
返回
void
注解
[ API 集:邮箱 1.5 ]
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识和回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章 和 常见问题解答页面。
Outlook REST v2.0 和 beta 终结点现已弃用。 但是,在 2025 年 10 月 14 日 Outlook 2019 的扩展支持结束之前,私下发布的加载项和 AppSource 托管的加载项可以使用 REST 服务。 将自动标识来自这些加载项的流量以免除。 此豁免也适用于 2024 年 3 月 31 日之后开发的新加载项。 尽管加载项能够在 2025 年之前使用 REST 服务,但我们强烈建议你迁移加载项以使用 Microsoft Graph。 有关指导,请参阅 比较 Microsoft Graph 和 Outlook REST API 终结点。
如果在 Outlook.com 或 Gmail 邮箱中加载加载项,则不支持此方法。
此方法仅在 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
:用户不再连接到网络。 请检查网络连接并重试。
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.error
和 asyncResult.diagnostics
属性可能会提供其他信息。
- userContext
-
any
可选。 传递给异步方法的任何状态数据。
返回
void
注解
[ API 集:全部支持读取模式;邮箱 1.3 引入了Compose模式支持 ]
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识和回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章 和 常见问题解答页面。
可以将令牌和附件标识符或项标识符传递给外部系统。 该系统使用该令牌作为持有者授权令牌来调用 Exchange Web Services (EWS) GetAttachment 或 GetItem 操作以返回附件或项目。 例如,可以创建一个远程服务来 从所选项获取附件。
getCallbackTokenAsync
在读取模式下调用 方法需要读取项的最低权限级别。getCallbackTokenAsync
在撰写模式下调用 方法需要保存项目。 方法saveAsync
需要 读/写项的最低权限级别。Android 版或 iOS 版 Outlook 不支持此方法。 在移动客户端上的 Outlook 中运行的加载项中不支持 EWS 操作。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
如果在 Outlook.com 或 Gmail 邮箱中加载加载项,则不支持此方法。
有关委托或共享方案的指导,请参阅 共享文件夹和共享邮箱 一文。
错误:
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((result) => {
if (result.status === Office.AsyncResultStatus.Failed) {
console.error(`Token retrieval failed with message: ${result.error.message}`);
return;
}
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.error
和 asyncResult.diagnostics
属性可能会提供其他信息。
- userContext
-
any
可选。 传递给异步方法的任何状态数据。
返回
void
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
重要说明:
2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识和回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章 和 常见问题解答页面。
方法
getUserIdentityTokenAsync
返回一个令牌,可用于使用外部系统标识加载项和用户并对其进行身份验证。如果在 Outlook.com 或 Gmail 邮箱中加载加载项,则不支持此方法。
错误:
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((result) => {
if (result.status === Office.AsyncResultStatus.Failed) {
console.error(`Token retrieval failed with message: ${result.error.message}`)
return;
}
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 网页版 中,在 Windows (从版本 2303、内部版本 16225.10000) ) 开始的新 (和经典 (,在从版本 16.73 (23042601) ) 开始的 Mac (上,如果响应大小超过 5 MB,则会在 属性中asyncResult.error
返回错误消息。 在早期版本的 Outlook on Windows (经典) 和 Mac 上,如果响应超过 1 MB,则返回错误消息。
- userContext
-
any
可选。 传递给异步方法的任何状态数据。
返回
void
注解
最低权限级别: 读/写邮箱
适用的 Outlook 模式:Compose或读取
重要说明:
2024 年 10 月,所有Exchange Online租户的旧版 Exchange 用户标识和回调令牌默认处于关闭状态。 这是 Microsoft“安全未来计划”的一部分,该计划为组织提供了应对当前威胁环境所需的工具。 Exchange 用户标识令牌仍适用于本地 Exchange。 嵌套应用身份验证是今后令牌的建议方法。 有关详细信息,请参阅我们的 博客文章 和 常见问题解答页面。
若要使 方法能够
makeEwsRequestAsync
发出 EWS 请求,服务器管理员必须在客户端访问服务器 EWS 目录上设置为OAuthAuthentication
true
。外接程序必须具有 读/写邮箱 权限才能使用
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 网页版 或 Windows 上的新 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, (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 模式:Compose或读取
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 模式:Compose或读取
示例
Office.context.mailbox.removeHandlerAsync(Office.EventType.OfficeThemeChanged, (asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.error("Failed to remove event handler: " + asyncResult.error.message);
return;
}
console.log("Event handler removed successfully.");
});