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

时间:2019-11-27 14:30:30

标签: outlook outlook-web-addins

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

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

The specified attachment Id is invalid.

但是,如果我通过Web应用程序执行完全相同的操作,则效果很好。

我已经检查过,Office.context.mailbox.item.itemIdOffice.context.mailbox.item.attachments[i].id在Web或台式机上都完全相同。

带有附件的电子邮件尚未从其他文件夹移动,没有附件的电子邮件可以正常工作。

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

我正在运行Office 365,Outlook版本是1910(内部版本12130.20390),在Windows 10上运行。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

在收到@ OutlookAdd-insTeam-MSFT的一些有用建议之后,我已经找到了解决方案。

问题是,在将邮件从共享文件夹移动到主收件箱后,使用桌面应用程序时,Office.context.mailbox.item.attachments(我们在运行Office.initialize时创建)不再返回正确的ID,相反,它似乎从移动电子邮件之前返回了旧的缓存/过期ID。使用此方法返回的ID正确无误。

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

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

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