【问题标题】:Do Outlook Add-ins API support event listeners?Outlook 加载项 API 是否支持事件侦听器?
【发布时间】:2019-03-04 15:25:16
【问题描述】:

我正计划编写一个 Outlook 插件,我想知道是否有办法监听事件,例如“发送按钮”。在实践中,我想在用户按下发送按钮时操纵正文,甚至在发送电子邮件之前。

据我所知,唯一的方法是创建一个按钮,例如“操作”,并在单击时附加一个事件。这是可行的,但是如果您每次发送电子邮件都必须这样做,那就很烦人了。

此外,Outlook 如何运行加载项?在撰写模式下,如果我有:

Office.context.mailbox.item.body.getAsync

每当我在正文中键入新字母或发送消息时都会运行此程序吗?我有点困惑。

This 可能略有重复。再次感谢。

【问题讨论】:

    标签: javascript email outlook office365 outlook-web-addins


    【解决方案1】:

    您不能在 iFrame 的父窗口(加载项所在的位置)的 DOM 元素上附加侦听器。因此,您无法破解 Outlook Web Access 按钮的行为。

    请务必注意,新的 Office Web 插件生成比旧桌面插件的侵入性要小。事实上,以 VSTO 为例,无论好坏,人们都可以访问整个 Outlook 对象模型。这是我写的关于这个主题的a blog post

    您描述的解决方案似乎是做您想做的事情的合适方法。另外,让我强调一下,Web 插件框架不允许您在未经用户同意的情况下更改电子邮件的内容,这是一件好事。

    请记住,Office.js 为您提供了与 EWS API 通信的可能性,当某些内容不能直接从 Office.js API 获得时,这非常有用。 See this link

    【讨论】:

    • 所以没有混淆:只有当您需要对 Exchange 进行基于服务器的调用时,才需要 EWS 令牌;调用mailbox.makeEwsRequestAsync 不需要这些令牌,但您有一小部分受支持的操作。但是 Benoit 可能已经知道这一切 ;-)
    • @EricLegault,你说得对,我不应该只提到令牌,因为你可以与 EWS 对话(我已经编辑了答案)。另请注意 makeEwsRequestAsync 需要 ReadWriteMailbox 权限,这意味着只有管理员才能安装您的插件。
    • 所有用户都可以安装任何权限级别的 Web 加载项,而无需提升权限。他们毕竟是自己邮箱的“管理员”。
    • 是的,你是对的,我刚刚测试过可以确定。我以为我在 msdn 上的某个地方读过它……但是,新文档似乎还可以msdn.microsoft.com/en-us/library/office/…
    • 好的,所以基本上不可能在发送任何电子邮件之前激活加载项并让它在后台运行?我正在尝试复制一个具有这种行为的 chrome 插件。如果用户每次都必须按下一个按钮,这很烦人。
    【解决方案2】:

    关于“每当我在正文中键入新字母或发送消息时都会运行吗?

    根据我的实验,即使您每秒调用一次 Office.context.mailbox.item.body.getAsync,它也会每隔几秒(接近约 20 秒)返回新的正文内容。

    我不知道为什么存在这种刷新间隔,它没有记录在 AFAIK 中,以及为什么它不像 VSTO 加载项那样在每个字母中都刷新。

    我发现实时刷新它的唯一(奇怪)方法是用户按下任务窗格。

    我想我们将不得不等待类似excel js api events 的消息。

    【讨论】:

    • 在 Outlook 中是否有任何更新?我们有一个 COM API,我们很想将其转移到 Outlook js API,但由于我们有与会议相关的项目,因此需要在编辑或删除会议时删除或编辑它们,包括通过文件夹事件,它似乎没有可以在 Outlook js API 中使用。
    猜你喜欢
    • 2011-06-01
    • 2022-08-03
    • 2019-10-20
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多