Implementar o grupo do Outlook 2010 por conversa usando o EWS e o Exchange 2007

Estamos usando o EWS para gerar algumas análises em algumas de nossas caixas de correi

Parte disso é obter uma contagem / nome / início / fim das conversas. Uma conversa análoga à que o Outlook 2010 mostra ao agrupar por conversa.

Eu esperava poder usar o ConversationId para agrupar itens, mas esse parece ser um recurso exclusivo do Exchange 2010.

Eu posso agrupar por assunto em uma pasta para ter uma idéia simples dos threads ... no entanto, isso não trata de conversas divididas, como o Outlook 2010 - especificamente, ele não trata de trazer as respostas que estão nos itens enviados ( isso é importante para nós - não podemos obter boas métricas sem também procurar respostas).

Meu código atual para obter informações sobre threads é assim:

private IEnumerable<EmailThread> GetThreads(Folder folder)
    {
        var view = new ItemView(int.MaxValue) {PropertySet = new PropertySet(BasePropertySet.IdOnly)};

        // view.PropertySet.Add(ItemSchema.ConversationId); - Can't use this as we're stuck on Exchange 2007 !!!
        view.PropertySet.Add(ItemSchema.Subject);
        view.PropertySet.Add(ItemSchema.DateTimeReceived);

        var grouping = new Grouping(ItemSchema.Subject, SortDirection.Descending, ItemSchema.DateTimeReceived, AggregateType.Maximum);
        var groupResults = folder.FindItems(view, grouping);


        return groupResults.Select(x => new EmailThread
        {
            Name = x.Items.First().Subject,
            Items =  x.Items.Count,
            StartDate = x.Items.Last().DateTimeReceived, // Assume last in thread is first email
            EndDate = x.Items.First().DateTimeReceived // Assume first in thread is most recent
        });
    }

Espero que alguém saiba uma maneira elegante de obter informações com eficiência sobre as respostas que fazem parte de uma convers

questionAnswers(1)

yourAnswerToTheQuestion