用于获取消息的MS图形API为已删除的消息返回无效的parentFolderId

时间:2020-01-10 09:38:31

标签: microsoft-graph-api

我的目标是确认用户删除的邮件确实已进入“已删除邮件”文件夹。

我有一个订阅,通知我changeType =已删除。订阅后,我会收到这样的通知-

{
    u '@odata.type': u '#microsoft.graph.message',
    u '@removed': {
        u 'reason': u 'deleted'
    },
    u 'id': u 'AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AQ4KiMeupd0KGRfRTWvssWQAAZpGrnAAA'
}

然后我获取此消息ID,并查询服务器以获取消息。我希望邮件中的父文件夹ID可以告诉我邮件是否已移至“已删除邮件”文件夹

https://graph.microsoft.com/v1.0/me/messages/AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AQ4KiMeupd0KGRfRTWvssWQAAZpGrnAAA

此API成功执行,并且收到消息对象的响应。但是parentFolderId值无效-即它与我从https://graph.microsoft.com/v1.0/me/mailFolders

获取的任何现有文件夹ID不匹配

有人遇到过这样的问题吗? 收到删除通知后,如何确认邮件确实已进入“已删除邮件”

感谢所有帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用该ID来获取文件夹以确认其无效?

我只是在这里进行了一些测试,结果取决于用户删除项目的方式。

如果他们只是按下“删除”(或使用UI中的删除按钮等),它将被移至“已删除邮件”。在这种情况下,您会收到deleted通知,并且parentFolderId与“已删除邮件”一致。

如果他们按SHIFT + DELETE,则客户端会询问您是否要“永久删除”该项目。如果将它们设置为保留已删除项目(默认情况下处于启用状态),则不会真正真正永久删除它们。它已复制到一个特殊的文件夹中,以便用户可以在配置的撤消期限(我认为默认值为30天)内将其还原。在这种情况下,parentFolderId与此特殊文件夹重合。使用Graph Explorer,在执行GET /me/mailfolders/{id}时会看到以下内容:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('deeb074f-40b0-4a1f-a471-7baab44c0026')/mailFolders/$entity",
    "id": "AQMkAGUyN2I4N2RlLTEzMTAtNDBmYy1hODdlLTY2ADU0MDgxNjBhMGYALgAAAzYn1Af8O8xErekG37ysDqcBAK48gWNswSROgdxWdCKszmoAAAIBHQAAAA==",
    "displayName": "Deletions",
    "parentFolderId": "AQMkAGUyN2I4N2RlLTEzMTAtNDBmYy1hODdlLTY2ADU0MDgxNjBhMGYALgAAAzYn1Af8O8xErekG37ysDqcBAK48gWNswSROgdxWdCKszmoAAAIBGwAAAA==",
    "childFolderCount": 0,
    "unreadItemCount": 1,
    "totalItemCount": 1
}