EWS 托管 API 有一些用于检索和管理的功能 电子邮件对话 (又名 电子邮件线程 )。不幸的是,其中很大一部分仅适用于新版本的 Exchange(2013 等)
Outlook 确实针对旧版本的 Exchange 实现电子邮件线程。也许它是通过自己管理线程来实现的(Outlook 是一个桌面应用程序,电子邮件被复制到本地机器上,因此它们可以很容易地按对话主题等进行分组)。
现在,如何在 中支持电子邮件线程网络应用程序 ?通常如何在 Exchange 客户端中支持此功能?支持我的意思是:
EWS 托管 Api 等问题:
我现在使用的是什么(作为一种解决方法) :
上述实现的一些问题
在电子邮件对话/电子邮件线程中,没有人知道哪个支持什么:
注意:我不太确定 Item.ConversationId 的支持,因为我手头没有代码,现在无法执行测试。因此,如果在针对 Exchange 2010 使用 EWS 托管 API 时该属性毕竟可用,请原谅我。
总而言之,
您对在 Web 应用程序中实现电子邮件对话/电子邮件线程功能有什么想法,对 Exchange 2010 服务器使用 EWS 托管 API?
非常感谢您有耐心阅读这么长的帖子:)
一些引用资料:
http://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.exchangeservice_methods%28v=exchg.80%29.aspx
http://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.conversation_members%28v=exchg.80%29.aspx
http://msdn.microsoft.com/en-us/library/office/gg274407%28v=exchg.80%29.aspx
http://msdn.microsoft.com/en-us/library/office/jj220497%28v=exchg.80%29.aspx
Implementing Outlook 2010's group by conversation using EWS and Exchange 2007
Exchange Webservice Managed API - Find items by extended properties
最佳答案
我已经解决了您在评论中遇到的一些文档问题,因此我将尝试在这里回答您真正的编码问题。
要获得主 View ,ExchangeService.FindConversation 是正确的使用方法。它通过将结果限制为由 view 参数指定的 session 数来支持分页。您可以按需调用它以获得越来越旧的结果。
要获得详细 View ,因为 ExchangeService.GetConversationItems 在 Ex2010 上不可用,您可以将 ExchangeService.FindItems 与 IsEqualTo SearchFilter 一起使用,以搜索具有匹配 ConversationId 的项目(请参阅下面的代码)。这里有关于搜索过滤器的更多信息:How to: Use search filters with EWS in Exchange .
在下面的方法中,我通过指定一个属性集来限制 FindItems 调用的属性,而不是返回所有属性。如果要返回所有属性,只需删除设置 PropertySet 的行。
static void forumFindConversationItem(ExchangeService service)
{
ItemView view = new ItemView(10);
//Remove the following line if you want to get all the properties for each message. This will limit the properties returned in your results (and save time).
view.PropertySet = new PropertySet(EmailMessageSchema.Subject, EmailMessageSchema.DateTimeReceived);
SearchFilter.IsEqualTo conversationFilter =
new SearchFilter.IsEqualTo(EmailMessageSchema.ConversationId, "AAQkADIwM2ZlM2ZlLWMwYjctNDg2Ny04MDU0LTVkMTFmM2IxY2ZjZQAQANEDR7V/30dphLiNOLSTuxE=");
FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.Inbox, conversationFilter, view);
}
获得每个 ItemID(由上面的代码返回)后,您可以使用 Bind 方法获取每个项目的所有属性。
希望有帮助。当 MSDN 上方法的版本问题更新后,我会跟进。
关于asp.net - EWS Managed Api 中的电子邮件对话/电子邮件线程支持(针对 Exchange 2010 左右),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317493/