我已经为Outlook开发了一个加载项,它需要能够访问电子邮件的附件。
在桌面应用程序上,如果我将带有附件的电子邮件从共享文件夹移动到主收件箱,然后尝试在其上运行加载项,则会收到错误消息:
The specified attachment Id is invalid.
但是,如果我通过Web应用程序执行完全相同的操作,则效果很好。
我已经检查过,Office.context.mailbox.item.itemId
和Office.context.mailbox.item.attachments[i].id
在Web或台式机上都完全相同。
带有附件的电子邮件尚未从其他文件夹移动,没有附件的电子邮件可以正常工作。
我正在使用最初从Office.context.mailbox.getCallbackTokenAsync
获取的回调令牌通过PHP脚本在远程服务器上获取附件。这些请求是通过EWS请求发出的。
我正在运行Office 365,Outlook版本是1910(内部版本12130.20390),在Windows 10上运行。
有人可以帮忙吗?
答案 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。
我希望这对其他人有帮助。