注意:此特定问题会对我们的客户产生重大影响,从而导致高业务影响,并对收入产生直接影响。
当用户在编写电子邮件草稿时与我们的加载项交互时,如何为Outlook添加Outlook,最大限度地减少 EWS GetItem API 返回之前所花费的时间我们从itemId
收到的Office.context.mailbox.item.saveAsync()
确认回复了吗?
如果,事实证明我们的加载项无法控制项目何时会持久存储到EWS,那么最终用户可以采取什么措施来加快速度
我们正在寻找(a)技术解决方案,或(b)消息传递,以指导我们的客户如何缓解/解决/解决此问题。
我们的部分客户无法使用我们的Outlook附加内容发送电子邮件,或者必须等待很长时间(> 2分钟)才能发送电子邮件。
我们希望所有客户都能够使用我们的插件发送电子邮件,而无需等待不合理的时间。
根据我们的日志和客户报告,此问题仅存在于 Outlook 2016 for Windows 桌面应用程序中。我们没有证据表明该问题存在于任何其他版本的Outlook中,包括Outlook 2013或Outlook for Mac,但是这些问题可能也存在于这些客户端中。
我们的插件与撰写模式集成,可在撰写电子邮件时提供其他功能,例如模板,后续操作,打开和点击跟踪以及日程安排。
我们的插件与我们的SaaS产品协同工作:
我们的加载项在电子邮件中设置了EWS扩展属性,其中包含指示在该邮件上启用了哪些功能的元数据。
我们的带外SaaS产品配置为通过EWS API从客户的邮箱中读取。当遇到我们的Office加载项编写的EWS扩展属性时,它会触发代码路径以满足所需的行为。
我们问题的根本原因是我们在Outlook 2016 for Windows中与EWS的交互。 为了成功地与EWS交互以读取/写入邮箱项目,它必须知道该项目。
Office.context.mailbox.item.saveAsync()
的文档说:
在联机模式下的Outlook Web App或Outlook中,该项目将保存到服务器。在缓存模式的Outlook中,该项目将保存到本地缓存中。
它继续说:
注意:如果您的加载项在撰写模式下对项目调用
saveAsync
以使itemId
与EWS或REST API一起使用,请注意当Outlook处于缓存模式时,可能需要一些时间才能将项目实际同步到服务器。在项目同步之前,使用itemId
将返回错误。
因此,我们得出结论Office.context.mailbox.item.saveAsync()
虽然确实返回最终有效 itemId
,但并不保证任何后续EWS交互都会成功。到目前为止,我们发现无法加速Outlook客户端实际使EWS知道邮箱项目的过程。
我们已尝试通过投票 EWS GetItem来缓解此问题,以尝试获取ChangeKey
项目itemId
Office.context.mailbox.item.saveAsync()
来自{{1} }}。虽然我们已经看到这最终会成功,但在此之前可能需要一分钟或更长时间。对于我们的客户来说,这是太多的时间了。
如果Outlook 2016 for Windows桌面客户端处于"缓存模式",那么用户可以做些什么:
答案 0 :(得分:1)
在缓存模式下无法加快速度。不幸的是,这是在撰写模式下saveAsync的限制。有些注意事项:
1)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- [来自清单的扩展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)处于在线模式将大大减少时间。用户可以知道他或她是否处于在线模式,但加载项不能。
此外,状态栏会显示"已连接到Microsoft Exchange"在缓存模式下,"在线与Microsoft Exchange"在线模式。
切换到在线模式,消除了缓存模式带来的诸多好处。缓存模式在Outlook 2016中是默认模式。