如何获得一个电子邮件链的通用outlook mailitem ConversationID来自不同用户的回复

时间:2013-02-11 23:50:06

标签: c# outlook-addin

我正在使用C#开发一个OUTLOOK 2010插件。此插件将基于对话创建活动。 例如,一个用户创建新电子邮件,其他人回复,转发或CC,将此电子邮件链视为一个转换线程。 Thoes电子邮件具有相同的mailItem.ConversationID。 基于此conversationID,我的程序生成了一个activty,并将conversationid链接到活动,该活动可以在此电子邮件链中的每封电子邮件中看到。 这一切都在我的机器上工作正常(我回复,转发,cc在同一个电子邮件链中,它得到相同的conversationID)。但是,当其他用户回复电子邮件触发我的程序生成活动时,它会生成不同的ConverstationID(同一个电子邮件链)。

我的问题是: 1.ConversationID只适用于本地?就像在不同用户的机器上使用相同的电子邮件链一样,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,这个属性不断变化。

1 个答案:

答案 0 :(得分:1)

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