Office JS Outlook插件:能否在撰写邮件表单加载时自动设置正文?
如何在Outlook撰写邮件加载时自动设置正文(无需点击按钮)
当然可以实现!你目前用的Add-in Commands是靠用户点击触发代码,但要在撰写表单加载时自动执行逻辑,得用到Outlook加载项的**事件激活(Event-based activation)**功能——这正是为这类自动触发场景设计的。
下面是具体的实现步骤:
1. 修改清单文件(manifest.xml)
你需要在清单中添加EventBasedExtension扩展点,指定撰写邮件表单加载时触发的事件和对应的处理函数。
在清单的<VersionOverrides>节点下,补充以下配置:
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0"> <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1"> <!-- 保留你原有的Add-in Commands配置 --> <EventBasedExtensions> <EventBasedExtension Type="Mailbox"> <EventHandlers> <!-- 监听邮件撰写表单加载事件 --> <EventHandler Type="ItemEdit" FunctionName="onMessageComposeLoad"> <Items> <Item Type="Message"/> </Items> <SupportsSharedFolders>false</SupportsSharedFolders> </EventHandler> </EventHandlers> </EventBasedExtension> </EventBasedExtensions> <!-- 其他原有配置 --> </VersionOverrides> </VersionOverrides>
这里的ItemEdit事件会在用户打开撰写邮件表单(包括新建、回复、转发邮件)时触发,FunctionName指定了要执行的JavaScript函数名。
2. 实现自动设置正文的代码
在你的加载项JS文件中,编写onMessageComposeLoad函数,调用Office JS API完成正文设置:
// 关联事件处理函数与Office系统 Office.actions.associate("onMessageComposeLoad", onMessageComposeLoad); async function onMessageComposeLoad(event) { try { // 自定义要填充的正文内容(支持HTML格式) const autoFillContent = "<p>这是自动填充的邮件正文👋</p><p>可以用HTML标签来排版内容,比如换行、加粗:<strong>重要提示</strong></p>"; // 异步设置邮件正文 await Office.context.mailbox.item.body.setAsync( autoFillContent, { coercionType: Office.CoercionType.Html } // 指定内容格式为HTML,也可改用Text设纯文本 ); // 通知Office事件处理完成,必须调用 event.completed(); } catch (error) { console.error("自动填充正文失败:", error); // 即使出错也要调用completed,避免加载项被标记为异常 event.completed(); } }
- 一定要调用
event.completed(),告诉Office你的逻辑已经执行完毕,否则加载项可能会被判定为超时。 - 如果需要纯文本内容,把
coercionType改成Office.CoercionType.Text即可。
3. 关键注意事项
- 版本兼容性:事件激活功能需要Outlook 2016(Windows版,版本16.0.8431.1000及以上)、Outlook网页版、Mac版Outlook 2016及更高版本支持。
- 权限配置:确保清单中的
<Permissions>节点设置为ReadWriteMailbox,因为修改邮件正文需要读写权限:<Permissions>ReadWriteMailbox</Permissions> - 测试验证:修改清单后,需要重新部署加载项,在Outlook中打开撰写表单,确认正文是否被自动填充。
这样就能实现你想要的“撰写邮件加载时自动设置正文”的功能,完全不需要用户点击按钮啦!
内容的提问来源于stack exchange,提问作者Vannick
相关产品推荐
相关产品推荐

