none
ConversationID for MailItem in different versions of outlook RRS feed

  • Question

  • I am working on outlook plugin, which logs mails to our system. We want one entry per mail thread/chain. We are developing 2 versions(for outlook 2003 and 2010) of plugins.

    For outlook 2010, I am using property ConversationID of MailItem to identify mail thread. Is it safe to use this property ? Is conversationId same for mailthread same no matter whats version of exchange server ?

    For outlook 2003, I do not find this property. I see ConversationIndex property. Can this be used in any way ?

    Some of our users will be using 2003 and some will use 2010, id that we use for mail thread should be same across different versions of outlook.

    Thursday, October 24, 2013 6:48 AM

All replies

  • PR_CONVERSATION_INDEX MAPI property was used as far back as Outlook 97 if I remember correctly.

    Outlook 2003 Object Model does not expose that property, but it is still there on the MAPI level. Since PropertyAccessor was not exposed until Outlook 2007, your options are CDO 1.21 or Redemption.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.5 is now available!

    Thursday, October 24, 2013 2:21 PM
  • ConversationIndex and ConversationTopic were both exposed long before Outlook 2003, both can be used from that version of the OOM. ConversationIndex is not static, one additional time stamp is added for each member of the conversation.

    ConversationID was added after Outlook 2003 (in Outlook 2010) and is not available from the object model for 2003. See http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._mailitem.conversationid.ASPX for more on ConversationID.

    The MAPI property corresponding to ConversationIndex is PR_CONVERSATION_INDEX. The MAPI property corresponding to ConversationID would be PidTagConversationId (http://msdn.microsoft.com/en-us/library/ee204279(v=exchg.80).aspx).


    Ken Slovak MVP - Outlook

    Thursday, October 24, 2013 2:42 PM
    Moderator
  • But I do find proerty ConversationIndex in 2003.
    Can I strip timestamp from ConversationIndex and use it ?
    I am assuming I will be able to find out length of ConversationIndex without any timestamps.
    Thursday, October 24, 2013 4:11 PM
  • ConversationIndex is exposed by Outlook 2003, ConversationId is not.

    Do you mean you just want to extract the first 22 bytes as outlined at http://msdn.microsoft.com/en-us/library/office/cc765583.aspx? Yes, you should be able to do that.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.5 is now available!

    Thursday, October 24, 2013 4:35 PM
  • Here is what I am thinking of doing to identify conversations logged to our system from outlook.

    Outlook 2003 -

    Use (first 44 characters of ConversationIndex)+user id. I had to append user id as conversation index for same mail chain can be different for different user machines.

    Outlook 2010 -

    Using conversation id. My assumption is this conversation ID is generated at server and would be same a mail thread on all user machines.

    Please correct me if I am missing anything.

    Thanks a lot for replies.

    Monday, October 28, 2013 8:13 AM