Реализация группы Outlook 2010 с помощью диалога с использованием EWS и Exchange 2007
Мы используем EWS для генерации аналитики в некоторых наших почтовых ящиках.
Частично это получение количества / имени / начала / конца разговоров. Разговор аналогичен тому, как Outlook 2010 показывает их при группировании по разговору.
Я надеялся, что смогу использовать ConversationId для группировки элементов, но, похоже, это функция только для Exchange 2010.
Я могу группировать по темам в папке, чтобы получить простое представление о потоках ... однако это не обрабатывает разделенные разговоры, как это делает Outlook 2010 - в частности, он не обрабатывает ввод ответов, которые есть в отправленных элементах (эти важны для нас - мы не можем получить хорошие показатели, не глядя также на ответы).
Мой текущий код для получения информации о потоке выглядит так:
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
});
}
Я надеюсь, что кто-то знает изящный способ эффективно получать информацию об ответах, которые составляют часть разговора?