【问题标题】:Intercept OnSend event after attachment reminder附件提醒后拦截 OnSend 事件
【发布时间】:2018-01-23 14:44:45
【问题描述】:

在 Outlook Web 加载项中,我试图拦截发送电子邮件时触发的 OnSend 事件。

我在 GitHub 中使用了这个 example,它运行良好。

如果我在电子邮件正文中包含“附件”一词并单击发送按钮,OnSend 事件将首次触发,因此我可以对电子邮件的内容进行一些处理。然而,过了一会儿,一个弹出的模式窗口出现了这个消息:

附件提醒

您可能忘记附加文件了。

带有发送不发送按钮。如果点击SendOnSend 事件会再次触发。这一次,重复相同的电子邮件处理是没有用的。所以,我正在寻找一种方法来找出第二个OnSend 事件是在附件提醒之后触发的。

有没有办法区分第一个和第二个OnSend 事件?

【问题讨论】:

    标签: outlook-addin office-js


    【解决方案1】:

    感谢您的提问,Mhd!这似乎是无意的行为,本质上是我们将研究修复的缺陷。 ItemSend 事件应该与遗忘附件检测很好地交互操作,并且应该只在检测发生后引发。换句话说,根本不应该调用第一个事件。如果您在此问题解决之前执行两次处理是否有问题?

    【讨论】:

    • 不幸的是,这对我来说是个问题,因为当OnSend 事件被触发时,我正在向电子邮件正文添加更多内容。所以它会被添加两次。既然您确认了问题,我会尽量记住已发送的项目(使用本地存储)以避免重复处理。我还注意到OnSend 事件在附件提醒窗口中单击 Send 按钮后被触发两次(不计算附件提醒之前的第一个事件)stackoverflow.com/questions/45489188/…
    • 知道了。是的,那么您确实需要想出一个解决方法。您正在考虑的一个可能会起作用。您还可以尝试在项目上设置一个自定义属性,表明它已被处理,当再次引发事件时,首先检查该属性,如果设置则忽略该事件。不过,我不知道您的情况-如果用户在附件对话框中取消发送并修改消息内容会发生什么-您是否需要重新处理消息?
    • 比起本地存储,我更喜欢自定义属性的想法。谢谢!!!如果邮件正文被修改,我必须重新进行处理,并根据新的邮件正文插入新的内容。但是我必须忽略第一个过程(删除第一个插入的内容)。我该如何处理这种情况?
    • 您可以将它包装到具有特定 ID 的 div 中以便于查找/删除?对于纯文本电子邮件案例(如果您完全支持),您需要单独处理 - 也许在开头/结尾使用一些关键字来标识您正在添加的内容?
    • 使用关键字在不同的语言中无法完美运行。但是,我正在考虑保存原始正文并捕获 不发送 按钮单击事件,因此我可以将修改后的正文替换为原始正文。是否有可能获得“不发送”事件?
    猜你喜欢
    • 2018-01-11
    • 2019-06-04
    • 1970-01-01
    • 2015-11-05
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    相关资源
    最近更新 更多