我正在使用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,这个属性不断变化。
答案 0 :(得分:1)
我自己想通了。 同一电子邮件链中的所有电子邮件都具有与ConversationIndex相同的前44个字符。每当新的回复者回复此电子邮件时,ConversationIndex将附加一个新的ramdon生成的44个字符的字符串。它是使用不同机器的用户的通用身份。但是当这封电子邮件的主题发生变化时,将生成一个全新的44个字符串ConversationIndex。 ConversationID仅适用于本地跟踪同一电子邮件链中的电子邮件