我已经为Outlook开发了一个加载项,它需要能够访问电子邮件的附件。
在桌面应用程序上,如果我将带有附件的电子邮件从共享文件夹移动到主收件箱,然后尝试在其上运行加载项,则会收到错误消息:
The specified attachment Id is invalid.
但是,如果我通过Web应用程序执行完全相同的操作,则可以正常工作。
我已经检查过,并且Office.context.mailbox.item.itemId
和Office.context.mailbox.item.attachments[i].id
完全相同,无论是在Web还是台式机上。
带有附件的电子邮件尚未从其他文件夹移动,并且没有附件的电子邮件可以正常工作。
我正在使用PHP脚本从远程服务器上获取附件,使用我最初从Office.context.mailbox.getCallbackTokenAsync
获得的回调令牌。这些请求是通过EWS请求发出的。
我正在运行Office 365,并且Outlook版本是1910(内部版本12130.20390),在Windows 10上运行。
有人可以帮忙吗?
在收到@ OutlookAdd-insTeam-MSFT的一些有用建议之后,我已经找到了解决方案。
问题是,在将消息从共享文件夹移动到主收件箱后,使用桌面应用程序时,Office.context.mailbox.item.attachments
(在我们运行Office.initialize
时创建的)不再返回正确的ID,而是似乎返回了电子邮件移动之前的旧的已缓存/过期ID。使用此Web应用程序时返回的ID使用此方法是正确的。
但是,无论是从Web应用程序还是从桌面应用程序调用,都通过EWS请求(或REST调用,但我使用EWS)从交换服务器请求ID总是返回正确的附件ID。
因此,我要解决的问题是确保并从交换服务器请求所有附件ID,而不是使用Office.context.mailbox.item
对象。这意味着要添加一个额外的步骤,即必须首先获取回调令牌,然后才能从交换服务器请求信息,但这意味着您总会获得正确的ID。
我希望这对其他人有帮助。