几个月来,我一直在努力解决ms图形api中的一个随机错误。最后,我在整个混乱中找到了一些感觉,但我认为图api中有一个错误。
我开发了一个多租户outlook-addin (JS),我的客户用来将他们的电子邮件和/或附件存储到存储中。我使用Office.context.mailbox.item对象获取消息的ItemId和附件的Id。我将这些id发送给一个诱饵,用EWS进行重拾电子邮件和/或附件的工作。因为客户端可以选择保存哪些附件,所以我需要将选定的附件Id发送到服务器,在服务器上检索电子邮件和附件。但是,当我试图将附件Id与Outlook应用程序中选择的附件Id匹配时,它们是不同的,并且找不到正确的附件。这种情况发生在随机消息和随机租户身上。
从电子邮件和附件的id中可以看出,附件id似乎是以电子邮件id为前缀的。有时候它们不匹配。示例:
用户在Outlook桌面客户端(Mac或Windows)中选择一封电子邮件,并获得邮件的id:
AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAfj8mWAADVFKe56AEMQo4qySw0u6tyAABBmpnFAAA=附件具有以下id (与电子邮件id不匹配):
AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAAAAEJAADVFKe56AEMQo4qySw0u6tyAABBmmK4AAABEgAQAOBOPI4JZ71CuMzlk7nqfZw=但是,当我使用email id查询EWS时(我知道REST/EWS id之间的差异),我获得了附件的id (这与email id匹配):
AAMkADYxNWNjMTRiLWFjYTYtNDM1OS04MTNjLThiNzM1ZWM0ZDFmZgBGAAAAAADbXpqFYshcSYLgLaL8DcdZBwDVFKe56AEMQo4qySw0u6tyAAAfj8mWAADVFKe56AEMQo4qySw0u6tyAABBmpnFAAABEgAQAOBOPI4JZ71CuMzlk7nqfZw=有趣的是,它是从OWA工作的-这个攻击id是正确的。这个特定的电子邮件已经被移动了,我知道当移动文件时,id会发生变化,但是附件id不应该跟着移动吗?在EWS中,id似乎已经更改,但在Outlook中没有更改
发布于 2018-06-07 16:28:07
我用我的身份证-窃听器技能来看你的身份证。
第一个是项目本身的id,而不是项目上的附件。这个id的实际PR_ENTRYID是PR_ENTRYID
第二个是附件,但父项不同。这个id的AAAAANtemoViyFxJguAtovwNx1kHANUUp7noAQxCjirJLDS7q3IAAAAAAQkAANUUp7noAQxCjirJLDS7q3IAAEGaYrgAAA==是PR_ENTRYID
附件标识部件: EADgTjyOCWe9QrjM5ZO56n2c
第三种也是附件,相同的“附件id”部分的id,但在这种情况下,它指的项目在原来的位置。如您所见,AAAAANtemoViyFxJguAtovwNx1kHANUUp7noAQxCjirJLDS7q3IAAB+PyZYAANUUp7noAQxCjirJLDS7q3IAAEGamcUAAA==匹配PR_ENTRYID
附件标识部件: EADgTjyOCWe9QrjM5ZO56n2c
这里发生了什么?在第二种情况下,项目位于不同的文件夹中。PR_ENTRYID由FID (文件夹id)和MID (消息id)组成。因此,如果一个项目从一个文件夹移动到另一个文件夹,那么id就会更改。你把它移回去,它就会恢复到原来的样子。奇怪,我知道。
这是微软想出一个不可变id的好理由:)
https://stackoverflow.com/questions/50741554
复制相似问题