如何开发不显示在ribbon上、撰写邮件时触发的add-in
该需求有成熟的可行实现方案,不需要依赖Ribbon区域挂载入口。
实现方案详情
核心扩展点选择
你需要放弃传统Outlook Add-in默认的Ribbon主命令面(PrimaryCommandSurface)扩展配置,改用Outlook Add-in提供的邮件头内嵌注入扩展点,这个注入位的默认展示位置正好在「To(收件人)」输入栏、「Send(发送)」按钮的正上方,和Outlook原生的附件缺失提醒、收件人异常提醒的展示位置完全一致,打开撰写邮件窗口时就会自动加载,不需要用户点击按钮触发。
具体配置要求
- 清单文件(Manifest)配置:不要声明任何Ribbon区域的自定义按钮控件,在
ExtensionPoint节点下配置自定义内嵌面板,指定注入面为MailHeaderSurface,绑定触发规则为邮件撰写场景(即FormType="Edit"的消息类型项)。 - 界面适配:该内嵌区域默认最大支持300px高度,超出内容会自动展示滚动条,你可以直接在注入的HTML页面里编写add-in的全部交互逻辑,和普通任务窗格的开发逻辑没有区别。
- 自动激活规则:可以通过配置Item规则,实现仅在满足特定条件(比如邮件正文包含特定内容、收件人包含外部域等)时才展示内嵌面板,不需要每次打开撰写窗口都强制显示。
兼容性说明
- 支持的客户端范围:新Outlook for Windows、Outlook网页版、2016年之后的即点即用版Outlook桌面端、16.38及以上版本的Outlook for Mac都支持该注入点,覆盖绝大多数主流用户场景。
- 旧版本兼容:2013及更早的MSI安装版永久授权Outlook不支持该内嵌注入能力,你可以单独为这类客户端配置一个默认隐藏的Ribbon备用入口,不会影响主流版本的无Ribbon展示效果。
核心配置示例
以下是Manifest文件中的核心配置片段:
<ExtensionPoint xsi:type="MessageComposeCommandSurface"> <CustomPane> <!-- 替换为你自己的add-in内嵌页面地址 --> <SourceLocation DefaultValue="https://your-add-in-domain/compose-panel.html"/> <!-- 配置面板高度,最大支持300 --> <RequestedHeight>240</RequestedHeight> <!-- 指定注入到邮件头区域,即To和Send按钮上方位置 --> <Surface>MailHeaderSurface</Surface> <!-- 配置仅在撰写邮件场景触发加载 --> <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit"/> </CustomPane> </ExtensionPoint>
内容的提问来源于stack exchange,提问作者programmer
相关产品推荐
相关产品推荐

