Office.Body interface
body 对象提供用于添加和更新邮件或约会内容的方法。 它将在所选项目的 body 属性中返回。
注解
HTML 表格边框颜色的已知问题
Windows 上的 Outlook:如果在Compose模式下将 HTML 表格中的各种单元格边框设置为不同的颜色,则单元格的边框可能不会反映预期的颜色。 有关已知行为,请访问 OfficeDev/office-js 问题 #1818。
最低权限级别: 读取项
适用的 Outlook 模式:Compose或读取
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/add-inline-base64-image.yaml
const mailItem = Office.context.mailbox.item;
const base64String =
"iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAnUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0S+bUAAAAMdFJOUwAQIDBAUI+fr7/P7yEupu8AAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF8SURBVGhD7dfLdoMwDEVR6Cspzf9/b20QYOthS5Zn0Z2kVdY6O2WULrFYLBaLxd5ur4mDZD14b8ogWS/dtxV+dmx9ysA2QUj9TQRWv5D7HyKwuIW9n0vc8tkpHP0W4BOg3wQ8wtlvA+PC1e8Ao8Ld7wFjQtHvAiNC2e8DdqHqKwCrUPc1gE1AfRVgEXBfB+gF0lcCWoH2tYBOYPpqQCNwfT3QF9i+AegJfN8CtAWhbwJagtS3AbIg9o2AJMh9M5C+SVGBvx6zAfmT0r+Bv8JMwP4kyFPir+cswF5KL3WLv14zAFBCLf56Tw9cparFX4upgaJUtPhrOS1QlY5W+vWTXrGgBFB/b72ev3/0igUdQPppP/nfowfKUUEFcP207y/yxKmgAYQ+PywoAFOfCH3A2MdCFzD3kdADBvq10AGG+pXQBgb7pdAEhvuF0AIc/VtoAK7+JciAs38KIuDugyAC/v4hiMCE/i7IwLRBsh68N2WQjMVisVgs9i5bln8LGScNcCrONQAAAABJRU5ErkJggg==";
// Get the current body of the message or appointment.
mailItem.body.getAsync(Office.CoercionType.Html, (bodyResult) => {
if (bodyResult.status === Office.AsyncResultStatus.Succeeded) {
// Insert the Base64-encoded image to the beginning of the body.
const options = { isInline: true, asyncContext: bodyResult.value };
mailItem.addFileAttachmentFromBase64Async(base64String, "sample.png", options, (attachResult) => {
if (attachResult.status === Office.AsyncResultStatus.Succeeded) {
let body = attachResult.asyncContext;
body = body.replace("<p class=MsoNormal>", `<p class=MsoNormal><img src="cid:sample.png">`);
mailItem.body.setAsync(body, { coercionType: Office.CoercionType.Html }, (setResult) => {
if (setResult.status === Office.AsyncResultStatus.Succeeded) {
console.log("Inline Base64-encoded image added to the body.");
} else {
console.log(setResult.error.message);
}
});
} else {
console.log(attachResult.error.message);
}
});
} else {
console.log(bodyResult.error.message);
}
});
方法
get |
获取一个值,该值指示内容采用 HTML 格式还是文本格式。 |
get |
获取一个值,该值指示内容采用 HTML 格式还是文本格式。 |
prepend |
将指定内容添加到项目正文开头。 |
prepend |
将指定内容添加到项目正文开头。 |
set |
将正文中的所选内容更换为指定文本。
|
set |
将正文中的所选内容更换为指定文本。
|
方法详细信息
getTypeAsync(options, callback)
获取一个值,该值指示内容采用 HTML 格式还是文本格式。
getTypeAsync(options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<Office.CoercionType>) => void): void;
参数
- options
- Office.AsyncContextOptions
包含以下一个或多个属性的对象文本:- asyncContext
:开发人员可以在回调函数中提供他们想要访问的任何对象。
- callback
-
(asyncResult: Office.AsyncResult<Office.CoercionType>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。 内容类型作为 属性中的CoercionType
asyncResult.value
值之一返回。
返回
void
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose
重要提示:在 Android 版 Outlook 和 iOS 版中,邮件Compose模式不支持此方法。 仅支持约会组织者模式。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/get-body-format.yaml
// Get the mail item's body format (plain text or HTML) and log it to the console.
Office.context.mailbox.item.body.getTypeAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log("Action failed with error: " + asyncResult.error.message);
return;
}
console.log("Body format: " + asyncResult.value);
});
getTypeAsync(callback)
获取一个值,该值指示内容采用 HTML 格式还是文本格式。
getTypeAsync(callback?: (asyncResult: Office.AsyncResult<Office.CoercionType>) => void): void;
参数
- callback
-
(asyncResult: Office.AsyncResult<Office.CoercionType>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。 内容类型作为 属性中的CoercionType
asyncResult.value
值之一返回。
返回
void
注解
最低权限级别: 读取项
适用的 Outlook 模式:Compose
重要提示:在 Android 版 Outlook 和 iOS 版中,邮件Compose模式不支持此方法。 仅支持约会组织者模式。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
prependAsync(data, options, callback)
将指定内容添加到项目正文开头。
prependAsync(data: string, options: Office.AsyncContextOptions & CoercionTypeOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;
参数
- data
-
string
将插入到正文开头的字符串。 字符串大小限制为 1,000,000 个字符。
包含以下一个或多个属性的对象文本:- asyncContext
:开发人员可以在回调函数中提供他们想要访问的任何对象。
coercionType
:正文的所需格式。 参数中的字符串将转换为此格式。
- callback
-
(asyncResult: Office.AsyncResult<void>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。
asyncResult.error
属性中将提供遇到的所有错误。
返回
void
注解
最低权限级别: 读/写项
适用的 Outlook 模式:Compose
建议:调用 getTypeAsync
,然后将返回的值传递给 options.coercionType
参数。
重要说明:
在内容预置后,游标的位置取决于加载项运行的客户端。 在 Outlook 网页版 和 Windows (新) 和经典) 中,光标位置在正文的预先存在内容中保持不变。 例如,如果光标在调用之前
prependAsync
位于正文的开头,则它将在调用后预先添加的内容和正文的预先存在内容之间显示。 在 Outlook on Mac 中,不会保留光标位置。 光标在调用后消失,prependAsync
仅在用户选择邮件项目正文中的某些内容时重新出现。使用 HTML 格式的正文时,请务必注意,客户端可以修改传递给
prependAsync
的值,使其通过其呈现引擎高效呈现。 这意味着,在 Mailbox 1.3) 中引入的方法的后续调用Body.getAsync
(返回的值不一定包含上prependAsync
一次调用中传递的确切值。在 HTML 标记中包含链接时,可以通过将定位点上的 属性 (<>) 设置为
id
“LPNoLP”来禁用联机链接预览, (有关示例) ,请参阅示例部分。在 Outlook on Android 和 iOS 中,“邮件Compose”模式不支持此方法。 仅支持约会组织者模式。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
不支持 SVG 文件。 请改用 JPG 或 PNG 文件。
方法
prependAsync
不支持内联 CSS。 请改用内部或外部 CSS。
错误:
-
DataExceedsMaximumSize
:数据参数长度超过 1,000,000 个字符。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/prepend-text-to-item-body.yaml
/* This snippet adds text to the beginning of the message or appointment's body.
When prepending a link in HTML markup to the body, you can disable the online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, '<a id="LPNoLP" href="https://www.contoso.com">Click here!</a>'.
*/
const text = $("#text-field").val().toString();
// It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the prependAsync call.
Office.context.mailbox.item.body.getTypeAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log("Action failed with error: " + asyncResult.error.message);
return;
}
const bodyFormat = asyncResult.value;
Office.context.mailbox.item.body.prependAsync(text, { coercionType: bodyFormat }, (asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log("Action failed with error: " + asyncResult.error.message);
return;
}
console.log(`"${text}" prepended to the body.`);
});
});
prependAsync(data, callback)
将指定内容添加到项目正文开头。
prependAsync(data: string, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;
参数
- data
-
string
将插入到正文开头的字符串。 字符串大小限制为 1,000,000 个字符。
- callback
-
(asyncResult: Office.AsyncResult<void>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。
asyncResult.error
属性中将提供遇到的所有错误。
返回
void
注解
最低权限级别: 读/写项
适用的 Outlook 模式:Compose
建议:调用 getTypeAsync
,然后将返回的值传递给 options.coercionType
参数。
重要说明:
在内容预置后,游标的位置取决于加载项运行的客户端。 在 Outlook 网页版 和 Windows (新) 和经典) 中,光标位置在正文的预先存在内容中保持不变。 例如,如果光标在调用之前
prependAsync
位于正文的开头,则它将在调用后预先添加的内容和正文的预先存在内容之间显示。 在 Outlook on Mac 中,不会保留光标位置。 光标在调用后消失,prependAsync
仅在用户选择邮件项目正文中的某些内容时重新出现。使用 HTML 格式的正文时,请务必注意,客户端可以修改传递给
prependAsync
的值,使其通过其呈现引擎高效呈现。 这意味着,在 Mailbox 1.3) 中引入的方法的后续调用Body.getAsync
(返回的值不一定包含上prependAsync
一次调用中传递的确切值。在 HTML 标记中包含链接时,可以通过将定位点上的 属性 (<>) 设置为
id
“LPNoLP”来禁用联机链接预览, (有关示例) ,请参阅示例部分。在 Outlook on Android 和 iOS 中,“邮件Compose”模式不支持此方法。 仅支持约会组织者模式。 有关 Outlook mobile 中支持的 API 的详细信息,请参阅移动设备上的 Outlook 中支持的 Outlook JavaScript API。
不支持 SVG 文件。 请改用 JPG 或 PNG 文件。
方法
prependAsync
不支持内联 CSS。 请改用内部或外部 CSS。
错误:
-
DataExceedsMaximumSize
:数据参数长度超过 1,000,000 个字符。
setSelectedDataAsync(data, options, callback)
将正文中的所选内容更换为指定文本。
setSelectedDataAsync
方法将指定的字符串插入项目正文中的光标位置,或者,如果在编辑器中选定了文本,它就会替换所选文本。 如果光标从未出现在项目正文中,或者如果该项目的正文不关注 UI,该字符串将插入到正文内容的顶部。 插入后,光标将置于插入内容的末尾。
setSelectedDataAsync(data: string, options: Office.AsyncContextOptions & CoercionTypeOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;
参数
- data
-
string
将替换现有正文的字符串。 字符串限制为 1,000,000 个字符。
包含以下一个或多个属性的对象文本:- asyncContext
:开发人员可以在回调函数中提供他们想要访问的任何对象。
coercionType
:正文的所需格式。 参数中的字符串将转换为此格式。
- callback
-
(asyncResult: Office.AsyncResult<void>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。
asyncResult.error
属性中将提供遇到的所有错误。
返回
void
注解
最低权限级别: 读/写项
适用的 Outlook 模式:Compose
建议:调用 getTypeAsync
,然后将返回的值传递给 options.coercionType
参数。
* 重要说明:
在 HTML 标记中包含链接时,可以通过将定位点上的 属性 (<>) 设置为
id
“LPNoLP”来禁用联机链接预览, (有关示例) ,请参阅示例部分。不支持 SVG 文件。 请改用 JPG 或 PNG 文件。
方法
setSelectedDataAsync
不支持内联 CSS。 请改用内部或外部 CSS。
错误:
DataExceedsMaximumSize
:参数data
长度超过 1,000,000 个字符。InvalidFormatError
:参数options.coercionType
设置为Office.CoercionType.Html
,消息正文为纯文本。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/20-item-body/replace-selected-text.yaml
/* This snippet replaces selected text in a message or appointment's body with specified text.
If you want to use a link in HTML markup as a value of the setSelectedDataAsync call's data parameter, you can disable online link preview by setting the anchor tag's id attribute to "LPNoLP". For example, '<a id="LPNoLP" href="https://www.contoso.com">Click here!</a>'.
*/
const text = $("#text-field").val().toString();
// It's recommended to call getTypeAsync and pass its returned value to the options.coercionType parameter of the prependAsync call.
Office.context.mailbox.item.body.getTypeAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log("Action failed with error: " + asyncResult.error.message);
return;
}
const bodyFormat = asyncResult.value;
Office.context.mailbox.item.body.setSelectedDataAsync(text, { coercionType: bodyFormat }, (asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log("Action failed with error: " + asyncResult.error.message);
return;
}
console.log(`Replaced selected text with "${text}".`);
});
});
setSelectedDataAsync(data, callback)
将正文中的所选内容更换为指定文本。
setSelectedDataAsync
方法将指定的字符串插入项目正文中的光标位置,或者,如果在编辑器中选定了文本,它就会替换所选文本。 如果光标从未出现在项目正文中,或者如果该项目的正文不关注 UI,该字符串将插入到正文内容的顶部。 插入后,光标将置于插入内容的末尾。
setSelectedDataAsync(data: string, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;
参数
- data
-
string
将替换现有正文的字符串。 字符串限制为 1,000,000 个字符。
- callback
-
(asyncResult: Office.AsyncResult<void>) => void
可选。 方法完成后,使用类型的Office.AsyncResult
单个参数调用在 参数中callback
传递的函数。
asyncResult.error
属性中将提供遇到的所有错误。
返回
void
注解
最低权限级别: 读/写项
适用的 Outlook 模式:Compose
建议:调用 getTypeAsync
,然后将返回的值传递给 options.coercionType
参数。
* 重要说明:
在 HTML 标记中包含链接时,可以通过将定位点上的 属性 (<>) 设置为
id
“LPNoLP”来禁用联机链接预览, (有关示例) ,请参阅示例部分。不支持 SVG 文件。 请改用 JPG 或 PNG 文件。
方法
setSelectedDataAsync
不支持内联 CSS。 请改用内部或外部 CSS。
错误:
DataExceedsMaximumSize
:参数data
长度超过 1,000,000 个字符。InvalidFormatError
:参数options.coercionType
设置为Office.CoercionType.Html
,消息正文为纯文本。