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