【问题标题】:How do I generate the 10-digit hex timestamp for the ConversationIndex MailItem property?如何为 ConversationIndex MailItem 属性生成 10 位十六进制时间戳?
【发布时间】:2018-04-06 16:31:10
【问题描述】:

我知道 Outlook 对话是使用 ConversationID 和 ConversationIndex 属性组织的。 ID 很好,但我需要知道如何构造为对话添加的 10 位十六进制时间戳。

例如,

Subject:           Testing
ConversationID:    955534474030B94C8E127B286C2D43DC
ConversationIndex: 0101D34CE912955534474030B94C8E127B286C2D43DC

Subject:           RE: Testing
ConversationID:    955534474030B94C8E127B286C2D43DC
ConversationIndex: 0101D34CE912955534474030B94C8E127B286C2D43DCA2F33AE240

如您所见,回复将时间戳 A2F33AE240 添加到 ConversationIndex。我知道这是一个时间戳,因为我读过这个

此约定使用串联的时间戳值,> 对话中的每条新消息都会在 ConversationIndex > 字符串的末尾添加一个新的时间戳。当您按 >ConversationIndex 值对消息进行排序时,您可以看到消息之间的时间关系。

这里:MSDN

我还没有找到任何关于如何自己构建它的信息,我需要告诉开发团队如何创建它。

一点背景知识:当前用于发送电子邮件的票务工具不尊重 ConversationID 和 ConversationIndex 属性,因此当从该工具发送的任何回复应该是同一对话的一部分时,Outlook 客户端会将它们视为新对话。

【问题讨论】:

  • 将不得不告诉开发团队微软的某些 API 功能的内部实现是如何完成的?他们是工程师,他们是应该做 IMO 逆向工程的人。

标签: vba outlook exchange-server


【解决方案1】:

对话索引的格式记录在案: https://msdn.microsoft.com/en-us/library/office/cc765583.aspx?f=255&MSPPError=-2147217396

如果你想查看现有的对话索引,可以使用OutlookSpy - 单击IMessage 按钮,选择PR_CONVERSATION_INDEX 属性,查看“符号”。编辑框,例如

UnnamedByte: 1
Current FILETIME: 6/20/1789 6:37 PM (-1615069184 (0x9FBC0000), 13847596 (0x00D34C2C))
GUID: {516D9479-70ED-6C4F-9D7B-AC62F6808A54}

ResponseLevel[0] = {
  DeltaCode = False
  TimeDelta = 0x0000D8B4
  Random = 7
  ResponseLevel = 0
}

ResponseLevel[1] = {
  DeltaCode = False
  TimeDelta = 0x000AD6AB
  Random = 14
  ResponseLevel = 0
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多