Microsoft Graph 发送电子邮件 api 对话索引不同

问题描述

我们正在将 MS Graph API 集成到我们的 c# 应用程序中。按照这篇文章 Send Mail Doccumentation 发送邮件工作正常。但是我面临着 ConversationIndex(主要是线程)的问题。 通过 API 发送的邮件的 ConversationIndex 与收件人对同一邮件回复不同。因此,它无法识别线程。

以下是用于发送邮件的有效载荷。有人可以帮我处理发送邮件时丢失的任何钥匙或财产吗?

{
  "message": {
    "subject": "Meet for lunch?","body": {
      "contentType": "Text","content": "The new cafeteria is open."
    },"toRecipients": [
      {
        "emailAddress": {
          "address": "fannyd@contoso.onmicrosoft.com"
        }
      }
    ],"ccRecipients": [
      {
        "emailAddress": {
          "address": "danas@contoso.onmicrosoft.com"
        }
      }
    ]
  },"savetoSentItems": "false"
}

解决方法

会话索引的结构

[reserved-1B] [timestamp-5B] [GUID-16B] [timestamp-5B][timestamp-5B]...[timestamp-5B]

同一会话线程的所有消息部分都具有相同的 16 字节 GUID。

Header Block 中的 5-Bytes [timestamp]:接收消息时的系统时间转换为 FILETIME 格式。

子块中的 5 字节 [时间戳]:子块仅适用于 Outlook 邮件,以指示线程中的后续邮件,同时保持标题块属性相同。每条回复对话的消息都会在末尾添加一个 [时间戳] 以创建新的对话索引。

属于同一会话线程的消息的相对顺序: 对于属于同一 GUID 的所有消息,按会话索引值对消息进行排序。

请参阅此处的文档以更好地理解。

Tracking conversations

ConversationIndex property

如果有帮助,请点赞。谢谢!