我們使用EWS在我們的一些郵箱上生成一些分析。通過使用EWS和Exchange 2007的對話實現Outlook 2010的羣組
這部分是獲取對話的計數/名稱/開始/結束。對話與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
});
}
我希望有人知道?
謝謝,但我不認爲這有什麼用處,因爲我在Exchange 2007上請參閱[這裏](http://msdn.microsoft.com/en-us/library/ee158568(V = EXCHG.80 ).aspx) - 特別是「Exchange 2003,Exchange 2007,Office Outlook 2003和Office Outlook 2007不支持計算PidTagConversationId屬性的值」 - 如果不清楚,我會重申 - 我們的Exchange 2007與Outlook 2010和(不知何故)Outlook是能夠創建一個線程視圖...大概沒有ConversationId – Kram
馬克,你是對的。但似乎可以派生PidTagConversationId值:雖然Exchange 2007不支持ConversationTopic屬性,但它與PidTagNormalizedSubject值具有相同的值(請參閱MS-OXOMSG 2.2.1.5)。 2.2.1.2節規定了如何從該屬性中調用ConversationId。 ConversationIndex受Exchange 2007支持;所以,通過這種組合,你應該能夠解決這個問題。 –
謝謝......瞭解ConversationTopic是有用的,它將幫助我計算出線程中的消息。當我請求PidTagConversationId時,它返回null,這很奇怪,因爲它已經得到了PidTagConversationTopic,所以,給定2.2.1.2,應該返回MD5哈希值 - 我想這是留給我做:) – Kram