Outlook 加载项 - 附件 ID 在桌面应用程序中无法正常工作,但在 Web 应用程序中可以正常工作

Outlook add-in - attachment ID's not working correctly in desktop app, but work on web app

我已经为 Outlook 开发了一个加载项,它需要能够访问电子邮件的附件。

在桌面应用程序上,如果我将带有附件的电子邮件从共享文件夹移动到我的主收件箱,然后尝试 运行 其上的加载项,我收到错误消息:

The specified attachment Id is invalid.

但是,如果我通过网络应用程序执行完全相同的操作,它工作正常。

我已经检查过 Office.context.mailbox.item.itemIdOffice.context.mailbox.item.attachments[i].id 无论是在网络上还是在桌面上都完全一样。

带有未从其他文件夹移动的附件的电子邮件,以及没有附件的电子邮件都可以。

我正在通过 PHP 脚本获取远程服务器上的附件,使用我最初从 Office.context.mailbox.getCallbackTokenAsync 获得的回调令牌。这些请求是通过 EWS 请求发出的。

我运行正在使用 Office 365,Outlook 版本为 1910(内部版本 12130.20390),运行正在 Windows10.

有人可以帮忙吗?

根据@OutlookAdd-insTeam-MSFT 的一些有用建议,我找到了解决方案。

问题是,将邮件从共享文件夹移动到主收件箱后,在使用桌面应用程序时,Office.context.mailbox.item.attachments(在 运行 Office.initialize 时创建)没有return 不再是正确的 ID,而是 return 电子邮件移动之前的旧 cached/out 日期 ID。使用此方法时,使用网络应用程序时 return 的 ID 是正确的。

但是,通过 EWS 请求(或 REST 调用,但我使用 EWS)从交换服务器请求 ID 总是 returns 正确的附件 ID,无论是从网络应用程序还是桌面应用程序。

因此,我得出的解决方案是确保并从交换服务器请求所有附件 ID,而不是使用 Office.context.mailbox.item 对象。这意味着要添加一个额外的步骤,即必须先获取回调令牌,然后才能从交换服务器请求信息,但这意味着您始终可以获得正确的 ID。

我希望这对其他人有帮助。