Outlook打开邮件时触发Outlook add-ins事件处理程序的实现咨询
Outlook 插件邮件读取触发事件实现方案
可用事件说明
Outlook JavaScript API 提供了完全匹配需求的事件支持:
Office.EventType.ItemChanged:用户切换选中邮件、点击打开新邮件进入阅读模式时都会触发,是你所需场景的核心监听事件- 若需要插件激活时立刻执行一次逻辑,可以搭配
Office.onReady()初始化入口事件使用
实现思路
第一步:配置插件清单文件(manifest.xml)
先声明插件的激活规则和权限,确保插件能在邮件阅读场景下运行:
- 配置
Requirements节点指定API最低版本为1.5以上,推荐用1.10+版本兼容性更好 - 新增
Rule节点,设置xsi:type="ItemIs"、ItemType="Message"、FormType="Read",让插件在邮件阅读模式下自动激活 - 按需申请权限:仅读取邮件内容申请
ReadItem权限即可,如需修改邮件内容要申请ReadWriteItem权限
第二步:JS 代码注册事件并实现自定义逻辑
参考代码示例如下:
// 插件初始化入口 Office.onReady((info) => { if (info.host === Office.HostType.Outlook) { // 注册邮件打开/切换事件 Office.context.mailbox.addHandlerAsync( Office.EventType.ItemChanged, onMailRead, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.error("事件注册失败:" + result.error.message); } } ); } }); // 自定义邮件读取处理逻辑 function onMailRead(eventArgs) { const currentMail = Office.context.mailbox.item; // 此处插入你的自定义处理逻辑,比如读取邮件主题、发件人、正文等 console.log("当前读取邮件主题:", currentMail.subject); // 异步处理完成后必须调用completed方法 eventArgs.completed(); }
注意事项
- 上述
ItemChanged事件仅在插件侧边栏已打开的状态下生效,如果需要不需要用户打开插件、后台静默触发逻辑,可以配置基于事件的激活规则,在manifest中声明ExtensionPoint类型为LaunchEvent,指定触发事件为OnMessageRead即可 - 读取邮件正文需要调用
currentMail.body.getAsync()异步方法获取,不能直接同步读取 - 桌面端Outlook、网页版Outlook对上述事件的支持一致,移动版Outlook需要单独做适配测试
内容的提问来源于stack exchange,提问作者Tamilarasan Rajamanickam
相关产品推荐
相关产品推荐

