3

我正在用 C# 开发一个 OUTLOOK 2010 插件。此插件将根据对话创建活动。例如,一个用户创建新电子邮件,其他用户回复、转发或抄送,将此电子邮件链视为一个会话线程。这些电子邮件具有相同的 mailItem.ConversationID。基于这个对话ID,我的程序生成了一个活动,并将对话ID链接到可以在这个电子邮件链中的每封电子邮件中看到的活动。在我的机器上一切正常(我在同一个电子邮件链中回复、转发、抄送,它得到相同的会话 ID)。但是,当其他用户回复电子邮件触发我的程序生成活动时,它会生成不同的 ConversationID(相同的电子邮件链)。

我的问题是: 1.ConversationID 仅在本地有效?就像不同用户机器上的同一个email Chain,conversationID不一样?2.只要用户使用相同版本的OUTLOOK,是否有一个电子邮件链的通用mailitem conversationID?

var mailItem = this.OutlookItem as OutlookNS.MailItem;


        if (mailItem.ConversationID != null )
        {
            OutlookHelper.Conversation_Index = mailItem.ConversationIndex;
            OutlookHelper.Conversation_Topic = mailItem.ConversationTopic;
            OutlookHelper.Current_ConversationID = mailItem.ConversationID;
            CreateActivity(mailItem.ConversationTopic,mailItem.ConversationID);
        }

我已经尝试过 EntryID,这个属性一直在变化。

4

1 回答 1

1

我自己想通了。同一电子邮件链中的所有电子邮件都具有相同的 ConversationIndex 前 44 个字符。每次有新的回复者回复此邮件时,ConversationIndex 都会附加一个新的 ramdon 生成的 44 个字符的字符串。它是为使用不同机器的用户应用的通用身份。但是当这封邮件的主题发生变化时,会生成一个全新的 44 个字符的 ConversationIndex。ConversationID 仅在本地工作以跟踪同一电子邮件链中的电子邮件

于 2013-02-12T19:19:37.003 回答