gpt4 book ai didi

outlook - 我们如何强制将邮箱项目持久保存到 EWS?

转载 作者:行者123 更新时间:2023-12-02 12:03:26 32 4
gpt4 key购买 nike

Note: This particular issue has significant impact on our customers, which translates to high business impact with direct consequences on revenue.

TL;博士。

当用户在撰写电子邮件草稿时与我们的加载项交互时,我们的 Outlook Office 加载项如何才能最大限度地缩短 EWS GetItem API 返回我们从 Office.context.mailbox.item.saveAsync() 收到的 itemId 响应是否正常?

如果事实证明我们的加载项无法控制项目何时保留到 EWS,那么最终用户可以采取什么措施来加快速度?

我们正在寻找 (a) 技术解决方案,或 (b) 消息来指导我们的客户如何缓解/修复/解决此问题。

最终用户影响

我们的一些客户无法使用 Outlook 的 Office 加载项发送电子邮件,或者必须等待很长时间(> 2 分钟)才能发送电子邮件。

我们的目标

我们希望所有客户都能够使用我们的加载项发送电子邮件,而不必等待不合理的时间。

其他上下文

根据我们的日志和客户报告,此问题仅存在于 Outlook 2016 for Windows 桌面应用程序中。我们没有证据表明任何其他版本的 Outlook(包括 Outlook 2013 或 Outlook for Mac)中都存在此问题,但这些客户端中也可能存在此问题。

我们的加载项概述

我们的插件与撰写模式集成,可在撰写电子邮件时提供附加功能,例如模板、跟进、打开和点击跟踪以及日程安排。

我们的加载项与我们的 SaaS 产品协同工作,如下所示:

  1. 我们的加载项在电子邮件上设置 EWS 扩展属性,并使用元数据指示该邮件启用了哪些功能。

  2. 我们的带外 SaaS 产品配置为通过 EWS API 从客户的邮箱中读取。当它遇到我们的 Office 加载项编写的 EWS 扩展属性时,它会触发代码路径以满足所需的行为。

根本原因分析

问题的根本原因是我们在 Outlook 2016 for Windows 中与 EWS 的交互。 为了成功与 EWS 交互以读取/写入邮箱项目,它必须知道该项目。

Office.context.mailbox.item.saveAsync() 的文档说:

In Outlook Web App or Outlook in online mode, the item is saved to the server. In Outlook in cached mode, the item is saved to the local cache.

进一步说:

Note: If your add-in calls saveAsync on an item in compose mode in order to get an itemId to use with EWS or the REST API, be aware that when Outlook is in cached mode, it may take some time before the item is actually synced to the server. Until the item is synced, using the itemId will return an error.

因此,我们得出的结论是 Office.context.mailbox.item.saveAsync(),尽管它确实返回一个最终有效 itemId,不保证任何后续 EWS 交互都会成功。到目前为止,我们还没有找到任何方法来加速 Outlook 客户端实际使 EWS 识别邮箱项目的过程。

缓解措施

我们尝试通过轮询来缓解此问题 EWS GetItem尝试获取具有从 Office.context.mailbox.item.saveAsync() 收到的 itemId 的项目的 ChangeKey。虽然我们已经看到这最终会成功,但可能需要一分钟或更长时间才能发生。对于我们的客户来说,等待的时间实在是太长了。

了解“在线模式”与“缓存模式”

如果 Outlook 2016 for Windows 桌面客户端处于“缓存模式”,用户可以执行以下操作:

  1. …知道客户端是处于“缓存模式”还是“在线模式”?
  2. …试图强制客户端进入“在线模式”?

最佳答案

在缓存模式下无法加快速度。不幸的是,这是撰写模式下 saveAsync 的限制。一些注意事项:

1) EWSId 仅当项目为草稿时才有效。发送后,当该项目在已发送项目中时,它将有一个新的 EWSId,该 EWSId 无法从 Office.js 获取

2) 您能否将您的信息保存到自定义属性中,而不是 EWS 扩展属性中。 (Office.context.mailbox.item.customProperties)https://dev.office.com/reference/add-ins/outlook/1.5/CustomProperties?product=outlook

这些属性将保存到已发送项目的邮件中,但不会被传输。那么你能找到这些属性

它们以 JSON 字典的形式存储在键/值对中的项目上。 mapi 属性的名称是“cecp-[ list 中的扩展 ID]”(在 PS_PUBLIC_STRINGS 中)

https://msdn.microsoft.com/en-us/library/office/cc842512.aspx

3) 听起来确实是解决这个问题的更好方法是使用 Office.js 函数来提供对此的写访问权限? (尽管我们不完全理解您的情况)。对新功能的请求应通过 UserVoice:

https://officespdev.uservoice.com/forums/224641-general/category/131778-outlook-add-ins

4)处于在线模式将大大减少时间。用户可以知道他或她是否处于在线模式,但外接程序不能。

https://support.office.com/en-us/article/Turn-on-Cached-Exchange-Mode-7885af08-9a60-4ec3-850a-e221c1ed0c1c

此外,状态栏在缓存模式下会显示“已连接到 Microsoft Exchange”,在在线模式下会显示“与 Microsoft Exchange 联机”。

切换到在线模式会消除缓存模式所具有的许多优势。 Outlook 2016 中默认使用缓存模式。

关于outlook - 我们如何强制将邮箱项目持久保存到 EWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671562/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com