EWS托管API有一些用于检索和管理电子邮件会话(也称为电子邮件线程)的功能。不幸的是,其中很大一部分仅适用于新版本的Exchange(2013等)
Outlook确实对旧版本的Exchange实施了电子邮件线程。也许它通过自己管理线程来做到这一点(Outlook是一个桌面应用程序,电子邮件被复制到本地计算机上,因此可以很容易地按对话主题等进行分组)。
现在,如何在 Web 应用程序中支持电子邮件线程?为了在 Exchange 客户端中支持此功能,通常执行哪些操作?通过支持,我的意思是:
EWS管理的Api等问题。:
我现在使用的(作为解决方法):
上述实现的一些问题
在电子邮件对话/电子邮件线程中,没有人知道哪些支持:
注意:我不是很确定该项目的支持度。ConversationId,因为我手头没有代码,无法立即执行测试。因此,如果在对Exchange 2010使用EWS托管API时,该属性仍然可用,请原谅。
总而言之,您对在Exchange 2010服务器上使用EWS托管API在web应用程序中实现电子邮件会话/电子邮件线程功能有什么想法吗?
非常感谢你有耐心看完这么长的帖子:)
一些参考文献:
http://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.exchangeservice_methods. aspx http://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.conversation_members.aspx http://msdn.microsoft.com/en-us/library/office/gg274407.aspx http://msdn.microsoft.com/en-us/library/office/jj220497
使用EWS和Exchange 2007 Exchange Webservice管理的API实现Outlook 2010的group by conversation通过扩展属性查找项目
更一般地说,ConversationID似乎存在问题,因为它被广泛理解并实际用于Exchange本身。这可能会影响你(或任何人)的发展。
我一直在制作一个电子邮件票务程序,并使用ConversationID将电子邮件集中在一个线程中,以便查看。
但是现在看来,有些电子邮件不在同一个线程上——是的,它们共享相同的主题和发件人地址,并且在同一日期/时间发送——但是它们不会出现在彼此的引用中(例如,一个电子邮件正文对一个旧的电子邮件正文的回应是一个“电子邮件线程”有多少个解释)——然而这些不同的电子邮件具有相同的确切ConversationID,即使一个正文与另一个没有任何关系。
事实上,即使日期/时间不接近,例如,来自同一个人的“今天的想法”电子邮件,这些电子邮件有时也会与相同的ConversationID分组。在这种情况下,这听起来可能很有用,但在工资单人员发送“RE:401k”的商业案例中并不那么有用。
需要说明的是,这不是一个区分大小写的强者,是我在使用Item时的一个疏忽。ExchangeID before(如果考虑大小写,它是唯一的)。即使算上大小写,完全不同的电子邮件线程也有完全相同的ConversationID。
我已经解决了您在评论中遇到的一些文档问题,所以我将尝试在这里回答您真正的编码问题。
要获取主视图,ExchangeService.FindConversation是正确的方法。它通过将结果限制在view参数指定的对话次数来支持分页。你可以按需调用它,以获得越来越老的结果。
以获得您的详细视图,因为ExchangeService。GetConversationItems在Ex2010上不可用,您可以使用ExchangeService。使用IsEqualTo SearchFilter查找具有匹配ConversationId的项目(参见下面的代码)。这里有更多关于搜索筛选器的信息:如何:在Exchange中对EWS使用搜索筛选器。
在下面的方法中,我通过指定属性集而不是返回所有属性来限制FindItems调用的属性。如果您想返回所有属性,您只需删除设置属性集的行。
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上方法的版本控制问题更新后,我会跟进。
问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送
我们的应用程序自动发送电子邮件,我需要这些电子邮件分组在线程,所以用户有他们的组织在他们的邮箱。这些邮件也可以有不同的主题。例如: 已创建问题93 问题93描述已更改 问题93受理人已更改 null 在不同的科目中,这实际上是可能的吗?我需要使用不同的策略吗? 谢谢
查看以下,详细了解如何处理与 iPhone 手机配对的 M600 上的电子邮件。 阅读您的 M600 上的电子邮件 如果您在手机上使用电子邮件通知,那么在您收到新邮件时会在您的 M600 看到通知。 阅读电子邮件 轻触通知。 利用您的 M600 回复电子邮件 您可以利用您的手腕表回复邮件。 回复电子邮件 轻触通知查看所有邮件 从屏幕底部向上滑动,查看您可以执行的操作。 轻触 Reply(回复),并
Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。 我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。 信件会从就近的小
Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。 我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。 信件会从就近的小
我想出了一个解决办法,就是导入所有用户的电子邮件文件夹。这个解决方案是工作的,它只是繁琐的维护,因为我们几乎每周都有新的/删除的用户。
我正在使用spring Boot从java发送HTML电子邮件。电子邮件包括签名与我们公司的形象标志。它工作得很好。在Gmail上。但在MacOS应用程序电子邮件中,徽标是作为附件发送的,而不是内联的。 代码的非相关部分替换为...
要使用Erlang发送电子邮件,您需要使用github提供的相同包。 github链接是 - https://github.com/Vagabond/gen_smtp 此链接包含一个smtp utility ,可用于从Erlang应用程序发送电子邮件。 按照步骤,可以从Erlang发送电子邮件 Step 1 - 从github site下载erl files 。 应将这些文件下载到hellowor