如何在 Microsoft Graph API 和 Office 365 管理活动 API 之间关联电子邮件?

问题描述 投票:0回答:1

我正在开发一个电子邮件分析应用程序,需要跟踪谁从共享邮箱发送电子邮件。为此,我使用了两个 Microsoft API:

  • Microsoft Graph API:获取电子邮件数据
  • Office 365 管理活动 API:获取审核日志,显示谁实际从共享邮箱发送电子邮件。

问题

当尝试关联这两个 API 之间的同一封电子邮件时,我注意到它们之间的“internet_message_id”字段有时会有所不同,即使其他属性(时间戳、主题)确认它是同一封电子邮件。

这种不一致现象会间歇性地发生——有时 ID 完全匹配,有时则不然。

环境

  • Microsoft Graph API v1.0
  • Office 365 管理活动 API v1.0
  • Rest API 调用(无 SDK)
  • 两个 API 的应用程序权限

我们遇到此问题的租户具有以下设置:

  • 本地 Active Directory 同步到 Azure AD
  • Exchange Server 与 Exchange Online 中的所有用户和共享邮箱混合
  • Exchange 属性同步到 Azure AD/Exchange Online
  • 用户通过 Outlook.com 和 Outlook 桌面客户端混合访问电子邮件

我的问题

  • 在这些 API 之间关联数据时,这是预期的吗?
  • 此变化是否与使用不同电子邮件客户端(Outlook 桌面版与 Outlook.com)的用户有关?
  • 是否有更可靠的方法来关联这两个来源之间的电子邮件?

任何见解或替代方法将不胜感激。有其他人在使用这些 API 时遇到过这个问题吗?

email outlook microsoft-graph-api exchange-server microsoft365
1个回答
0
投票

您可能想尝试使用 NetworkId,而不是以下任何一项(如果可用),请参阅 https://learn.microsoft.com/en-us/exchange/monitoring/trace-an-email-message/message-trace-modern -eac

  • X-MS-Exchange-组织-网络-消息-Id
  • X-MS-Office365-过滤-相关性-Id
  • X-MS-Exchange-跨租户-网络-消息-Id

例如

$expand=singleValueExtendedProperties($filter=(id eq 'String {00020386-0000-0000-C000-000000000046} name x-ms-exchange-crosstenant-network-message-id') or (id eq 'String {00020386-0000-0000-C000-000000000046} name X-MS-Exchange-Organization-Network-Message-Id'))

NetworkId 可以在 MessageTrace 中使用

 Get-MessageTraceDetail -MessageTraceId 808bbf42-fdf5-4ff4-c83f-08dd0fefdf82 -RecipientAddress user@domain

InternetMessageId 可能因某些原因而出现问题,因为任何 MTA 都可以在 Transit 中添加/修改此值。它们应该是全球唯一的,但实际上并不能保证,因此 Microsoft 生成自己的网络消息 ID。

此外,SendItems 文件夹中存储的邮件是在任何 MTA 处理之前发送的邮件(在 MessageStore 级别完成)的副本,因此您在这些邮件中找到的值可能与您看到的收到的值不同。

© www.soinside.com 2019 - 2024. All rights reserved.