项目ID和附件ID发生变化

时间:2018-06-07 12:43:39

标签: exchangewebservices microsoft-graph outlook-restapi

我一直在努力工作几个月,ms图api中出现随机错误。最后我在整个混乱中找到了一些意思,但我认为图api中存在错误。

我开发了一个多租户outlook-addin(JS),我的客户用它来存储他们的电子邮件和/或附件。我使用Office.context.mailbox.item对象来获取消息的ItemId和附件的Id。我将这些id发送给一个sevrer,使用EWS进行重新提取电子邮件和/或附件。由于客户可以选择保存哪些附件,因此我需要将选定的附件ID发送到服务器,在那里我检索电子邮件和附件。但是,当我尝试将附件ID与从Outlook应用程序中选择的匹配时,它们是不同的,我找不到正确的附件。这种情况发生在随机消息中,随机租户。

从我从ID中看到的电子邮件和附件,看起来附件ID的前缀是电子邮件ID。有时他们不匹配。例如:

用户在Outlook桌面客户端(Mac或Windows)中选择一封电子邮件,并获取该电子邮件的ID:

AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAfj8mWAADVFKe56AEMQo4qySw0u6tyAABBmpnFAAA=

附件具有此ID(与电子邮件ID不匹配):

AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAAAAEJAADVFKe56AEMQo4qySw0u6tyAABBmmK4AAABEgAQAOBOPI4JZ71CuMzlk7nqfZw=

但是当我使用电子邮件ID(我知道REST / EWS ID差异)查询EWS时,我得到了附件的ID(与电子邮件ID匹配):

AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAfj8mWAADVFKe56AEMQo4qySw0u6tyAABBmpnFAAABEgAQAOBOPI4JZ71CuMzlk7nqfZw=

有趣的是,它适用于OWA - 这个目标是正确的。此特定电子邮件已被移动,我知道在移动文件时,ID会更改,但附件ID是否应该跟随?在EWS中,id似乎已经改变,但在Outlook

中没有

1 个答案:

答案 0 :(得分:2)

我使用我的Id-Whispering技能来查看你的ID。

第一个是项目本身的ID,而不是项目的附件。此id的实际PR_ENTRYID为AAAAANtemoViyFxJguAtovwNx1kHANUUp7noAQxCjirJLDS7q3IAAB + PyZYAANUUp7noAQxCjirJLDS7q3IAAEGamcUAAA ==

第二个是附件,但父项是不同的。此id的PR_ENTRYID是 AAAAANtemoViyFxJguAtovwNx1kHANUUp7noAQxCjirJLDS7q3IAAAAAAQkAANUUp7noAQxCjirJLDS7q3IAAEGaYrgAAA ==

附件ID部分:EADgTjyOCWe9QrjM5ZO56n2c

第三个也是附件,相同的"附件ID" id的一部分,但在这种情况下,它指的是原始位置中的项目。如您所见,PR_ENTRYID匹配: AAAAANtemoViyFxJguAtovwNx1kHANUUp7noAQxCjirJLDS7q3IAAB + PyZYAANUUp7noAQxCjirJLDS7q3IAAEGamcUAAA ==

附件ID部分:EADgTjyOCWe9QrjM5ZO56n2c

那么这里发生了什么?看起来是第二种情况,该项目位于不同的文件夹中。 PR_ENTRYID由FID(文件夹ID)和MID(消息ID)组成。因此,如果项目从一个文件夹移动到另一个文件夹,则id会更改。你把它移回去,它又恢复了原来的id。很奇怪,我知道。

这是微软提出不可变ID的一个很好的理由:)

相关问题