【问题标题】:Microsoft Graph API: How to detected if Mail has been moved from another folder into an observed one (Mail/Delta Queries/Subscription)Microsoft Graph API:如何检测邮件是否已从另一个文件夹移动到观察到的文件夹(邮件/增量查询/订阅)
【发布时间】:2022-10-05 23:45:27
【问题描述】:

我们目前使用msgraph-sdk-dotnet 将我们的 .Net 应用程序从 EWS 迁移到 Graph API

我们主要使用message-delta 请求来观察邮件文件夹以检测传入的邮件。到目前为止,一切都很好。

从 EWS 迁移

使用 EWS 时,我们能够检测到移动的邮件事件/操作,并将这些邮件与新传入(新发送)邮件区分开来。到目前为止,我们还没有弄清楚谁可以通过使用 MS Graph API 来实现这一点。

关于用例

在某些用例中,我们必须将新发送的电子邮件与已由任何用户手动(通过 Outlook)从另一个文件夹移动/拖动到观察到的邮件中的邮件区分开来。这个用例场景包括以下流程:假设收件箱是观察到的文件夹,新的传入邮件已发送到邮箱并且邮件已被我们的增量请求观察者检测到。

然后,用户决定使用 Outlook 将此邮件移动到另一个自定义但未观察到的文件夹中。最后,用户决定将此邮件拖回观察到的文件夹中。现在我们希望有一个可靠的策略来检测这封邮件是否已移动(不是已发送或已更新,我们需要区分这些状态)。

暗示: 这个流程说明了为什么我们不能真正依赖是读:用户可以使用客户端(例如 Outlook)将任何邮件标记为已读,这很可能是您将邮件从一个文件夹拖到另一个文件夹时的情况。

如何检测移动的邮件?

邮件资源中是否有任何属性可用于识别邮件是否已被专门移动?也许公共 API 文档中没有提到的东西(ODATA,可以通过 folderIds 等提取的东西?)或 beta API 版本支持的东西?有任何想法吗?

我们还调查了subscription 资源,但没有找到具体反映移动邮件的特定changeType。

我们应该如何解决这些问题?任何想法如何使用 Graph API 为移动的邮件开发可靠的检测策略?

感谢您提供任何提示、建议或帮助

  • 您之前在 EWS 中是如何做到这一点的?为什么区分很重要?您如何对 POP3 提供商在 Outlook 客户端创建的收件箱文件夹中的电子邮件进行分类?
  • EWS 为此提供了EventType.Moved。即使我们使用subscription 资源,它也只支持changeType-s Created、Updated 或Deleted。我们使用singleValueLegacyExtendedProperty 标记所有收到的邮件。我们需要一种方法来区分已移动的邮件和已发送的邮件,因为移动的邮件必须重新触发我们的工作流程,而且我们不能依赖我们的自定义属性,因为有权访问观察者文件夹的用户可以移动所有已标记邮件的邮件。

标签: email outlook microsoft-graph-api office365 microsoft-graph-sdks


【解决方案1】:

我已经开始查看 lastModifiedDateTime 属性。看起来,当第一次收到消息时,lastModifiedDateTime 是在 receivedDateTime 之后 1-2 秒。当邮件移动到另一个邮件文件夹时, receivedDateTime 保持不变,但显然 lastModifiedDateTime 会发生变化。我仍在查看 Microsoft 文档以查找 lastModifiedDateTime 属性更改的所有地方。

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多