同步邮箱状态的最佳实践,增量与订阅

Best practice for syncing mailbox state, Deltas vs. Subscriptions

我正在构建一个 CRM,它通过处理发送到使用 Microsoft Graph 的用户的 Office365 帐户的电子邮件来处理应用程序中的电子邮件交换 API。在实际邮箱中跟踪电子邮件的最佳做法是什么?我应该使用 delta 还是订阅?

据我所知,Delta 是提供有关邮箱当前状态数据的 URL,但需要定期触发 delta(我会使用 CRON 作业),但随后我会运行 这个过程比需要的要多得多,因为用户每天不会收到那么多电子邮件。

或者,如果我使用订阅,它会在收到新电子邮件时通知我,并且我可以在我的应用程序中使用 webhook 进行处理。

Microsoft Graph documentation 看来增量是跟踪更改的方式,但我觉得因为我需要的只是知道何时收到新电子邮件以便对其进行相应处理,从某种意义上说,delta 的杀伤力太大了​​。

您将两者结合使用。

webhook 告诉您邮箱已更改,delta 告诉您邮箱中发生了什么更改。当您收到通知时,您拉取增量以检索对邮箱的更改。

这样做的原因有很多,但主要原因是电子邮件的 id 可以更改。这是因为消息 ID 是一个复合值,包括存储它的文件夹。因此,如果消息被移动,您在通知中收到的 ID 将无效。从历史上看,这是一种罕见的竞争条件,但随着交互式移动通知的出现,现在电子邮件进来并立即收到 "archived" 已经司空见惯。通过依赖 webhooks 的通知和内容的增量,您可以避免 CRON 作业,同时在处理消息之前减少 Id 更改。