具体实施方式
本发明诸原理提供将电子邮件消息组织成会话。电子邮件会话项目被存储在计算机可读介质上,并存储表示相应电子邮件会话的属性的消息会话数据。例如,电子邮件会话项目可存储标识电子邮件会话、标识电子邮件会话中的参与者、标识电子邮件会话中最活跃的参与者、表示电子邮件会话的持续时间、并标识电子邮件会话中答复消息的嵌套的各个值。电子邮件消息项目还可存储包括在所呈现电子邮件会话中每个电子邮件消息的每个消息数据。每个消息数据可包括表示与电子邮件消息(包括在电子邮件会话中)的链接(例如统一资源定位器“URL”),并表示电子邮件消息和相应父电子邮件消息或以其它方式相关的电子邮件消息的接收者之间任何差异的值。
本发明各实施例包括更新消息会话数据。计算机系统接收电子邮件消息。计算机系统将所接收的电子邮件消息链接到包括表示电子邮件会话属性的多个会话属性值的相应电子邮件会话项目。计算机系统保持所接收电子邮件消息与相应电子邮件会话项目之间的链接。计算机系统响应于接收所接收的电子邮件消息而改变一个或多个会话属性值,以适当地反映电子邮件会话的属性。
本发明其它实施例包括执行一电子邮件会话操作。计算机系统接收要在电子邮件会话上执行的操作的指示。计算机系统标识包括在电子邮件会话中的一个或多个电子邮件消息。计算机访问包括在电子邮件会话中的已标识的一个或多个电子邮件消息。计算机系统响应于要在电子邮件会话上执行的操作的已接收指示而对每个已标识的一个或多个电子消息执行相应的相关操作。
本发明另外的实施例包括呈现消息会话数据。计算机系统接收要呈现包括一个或多个电子邮件消息的电子邮件会话的消息会话数据的命令。计算机系统访问表示电子邮件会话的电子邮件会话项目。计算机系统从电子邮件会话项目检索持续会话的表示电子邮件会话属性的属性值。计算机系统呈现检索到的会话属性值以及一个或多个电子邮件消息的一部分。
本发明范围内的各实施例包括用于实现或具有存储其上的计算机可执行指令或数据结构的计算机可读介质。这种计算机可读介质是通用或专用计算机系统可访问的任何可用介质。作为示例,而非限制,这种计算机可读介质可包括诸如RAM、ROM、EPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置的物理存储介质,或可用来以计算机可执行指令、计算机可读指令、或可由通用或专用计算机系统访问的数据结构的形式实现或存储的任何其它介质。
在本说明书及其后权利要求中,“网络”被定义为使能电子数据在计算机系统和/或模块之间传输的一个或多个数据链接。当信息经网络或另一通信连接(硬接线的、无线的、或者硬接线或无线的组合)传输或提供给计算机系统时,该连接通常被示为计算机可读介质。因而,任意这种连接通常被称为计算机可读介质。以上的组合也应被包括在计算机可读介质的范围内。计算机可执行指令包括,例如,致使通用计算机系统或专用计算机系统执行某一功能或功能组的指令和数据。计算机可执行指令可以是,例如,二进制、诸如汇编语言的中间格式指令、或甚至是源代码。
在本说明书及其后权利要求中,“计算机系统”被定义为一起工作对电子数据执行操作的一个或多个软件模块、一个或多个硬件模块、或其组合。例如,计算机系统的定义包括个人计算机的硬件组件以及软件模块,诸如个人计算机的操作系统。模块的物理布局并不重要。计算机系统可包括经网络耦合的一个或多个计算机。类似地,计算机系统可包括内部模块(诸如存储器和处理器)一起工作以对电子数据执行操作的单个物理装置(诸如移动电话或个人数字助理“PDA”)。
本领域技术人员将理解,本发明可在具有多类计算机系统配置的网络计算环境中实践,包括个人计算机、膝上型计算机、手持式装置、多处理器系统、基于微处理器或可编程消费电器、网络PC、微计算机、大型计算机、移动电话、标准电话、PDA、寻呼机等。本发明还可在分布式系统环境中实践,其中本地计算机系统和通过网络链接(通过硬接线数据链接、无线数据链接、或硬接线或无线数据链接的组合)的远程计算机系统都执行任务。在分布式系统环境中,程序模块可位于本地和远程存储装置中。
在本说明书及其后权利要求中,“会话”被定义为与一特定主题或话题相关的多个消息传送实体之间的电子消息交换。
图1示出便于将电子邮件消息组织成会话的计算机体系结构100的一个示例。如在计算机体系结构100中所示,计算机系统103与网络101和102相连。网络101实质上可以是任何类型的网络,比如广域网(“WAN”)甚至因特网。类似地,网络102实质上可以是任何类型的网络,比如局域网(“LAN”)、私有区域网(“PAN”)、或家用区域网(“HAN”)。计算机系统131、132和133也与网络102相连。
与网络101和102相连的计算机系统可与同样相连于网络101或网络102的其它计算机系统收发数据。因此,计算机系统103、131、132和133以及其它相连计算机系统(未示出)可根据利用IP数据包的其它高层协议来经网络101和102交换与消息相关数据(例如包括在因特网协议(“IP”))的数据包,这些其它高层协议诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)、邮局协议(“POP”)、因特网消息访问协议(“IMAP”)等。例如,计算机系统103、131、132和133的每一个可包括被配置成传输并处理电子邮件消息(以及其它消息相关数据)的电子消息应用程序(例如邮件服务器和/或邮件客户机)。
如计算机体系结构100中所示,计算机系统103包括消息服务器104。通常,消息服务器104可为计算机系统131、132和133的用户接收、转发、并存储电子消息。因而,消息服务器104可为计算机系统131、132和133的用户维护一个或多个邮件箱。当(例如根据SMTP经网络101)接收电子消息(例如消息141)时,消息服务器104可将该电子消息存储在适当邮件箱内。然后,用户可发送对电子邮件消息的请求。响应于该请求,消息服务器104可将电子消息(例如根据POP或IMAP经网络102)发送给适当的消息客户机(例如消息客户机134)。消息客户机可包括用于显示电子邮件消息和消息会话数据的用户界面(例如用户界面136)。
消息服务器104也可从消息客户机(例如消息客户机134)(例如根据SMTP经网络102)接收消息(例如消息143)用于传递给其它计算机系统。作为响应,消息服务器104可(例如根据SMTP经网络101)将电子邮件转发给其它消息服务器。
项目存储器107通常表示诸如文件系统、数据库、或电子邮件存储系统的用于保留、索引和回调数据的系统。电子消息和其它消息相关数据可存储在项目存储器107中。如图所示,项目存储器107包括联系人先进先出缓存区(silo)111、文件夹先进先出缓存区112、消息先进先出缓存区113和会话先进先出缓存区114。联系人先进先出缓存区111、文件夹先进先出缓存区112、消息先进先出缓存区113和会话先进先出缓存区114可分别存储相应的消息联系数据(例如名字和电子邮件地址)、消息文件夹数据(例如邮件文件夹)、消息数据(消息标题和主体)、以及消息会话数据。例如,消息先进先出缓存区113包括包含与所接收电子消息(例如消息141和/或消息143)相关的消息数据的消息项目122、123和124。
会话先进先出缓存区114包括会话项目127。通常,会话项目127是电子邮件会话的物理表示,并具有表示电子邮件会话的一个属性集。链接151、152和153分别将会话项目127链接到消息项目122、123和124。因而,消息项目122、123和124可被视为包括在由会话项目127表示的电子邮件会话中。
会话代理106在所接收的消息上动作以创建、更新并删除消息会话数据,比如有关包括在电子邮件会话中的电子邮件会话以及电子邮件消息的消息会话元数据。在某些实施例中,会话代理106维护在用户邮件箱内的“会话”文件夹。因而,会话项目可通过与会话文件夹交互来创建、更新、并删除。
当接收到电子邮件消息时(例如消息141或143),会话代理106可确定所接收的邮件消息是要被包括在现有的电子邮件会话中(例如已包括一个或多个其它电子邮件消息),还是要被包括在新的电子邮件会话中。响应于所接收的电子邮件消息,会话代理106可改变包括在所存储消息项目和会话项目中的各个值(以及项目存储器107中可能的其它数据)。
会话代理106可利用包括在所接收消息中的数据来确定可利用要包括一电子邮件消息的适当电子邮件会话。例如,会话代理106可解析标题数据以确定所接收的电子消息是否包括任何消息会话数据。在某些环境中,电子邮件消息包括消息会话数据,比如表示特定会话的会话索引或会话GUID。因此,会话代理106可基于该会话索引或会话GUID来确定适当的电子邮件会话。
在其它环境中,电子邮件消息不包括表示特定会话的消息会话数据。因而,会话代理106可从包括在电子邮件消息中的其它消息会话数据中标识指定电子邮件会话。例如,会话代理106可检查一个或多个消息标题的值(例如请求注解(“RFC”)2822“答复”和/或“引用”标题)来标识适当的电子邮件会话。会话代理106可在消息先进先出缓存区113中扫描其它消息项目以尝试标识所接收电子消息的父电子消息或以其它方式相关的电子消息。当标识父消息或相关消息时,所接收的消息可被包括在具有父或相关电子邮件消息的电子邮件会话中。
尽管会话代理106被示为在消息服务器104上,应理解会话代理106(或某些其它会话代理)可包括在将电子邮件消息组织成会话的任何计算机系统。例如,会话代理可被包括在计算机系统131、132和133的任一台上比如作为消息客户机134的一部分。因而对本领域技术人员而言,在阅读完本说明书之后,会话代理可被包括在除计算机系统103之外的任何数量的计算机系统中是显而易见的。会话相关命令(例如会话命令146)和相应的响应(例如会话数据147)可用分布式方式在会话代理和项目存储器之间传送。因此,电子邮件会话可被建模为第一类实体,而会话项目可被物理地保持在项目存储器107中。
图2示出表示会话项目的示例数据结构200。数据结构200是可由会话代理106操纵的数据结构的一个示例。会话项目127可根据数据结构200结构化。数据结构200实质上可以是任何类型的数据或数据流,比如可扩展标记语言(“XML”)数据流。会话项目201中的每个字段可被键入以存储特定类型的数据,诸如整数、字符串、字符、浮点数、16进制、8进制、二进制、逻辑、URL、甚至用户定义的数据。在会话项目201内,每个图示数据字段可存储表示和/或标识相应电子邮件会话的一个或多个属性的一个或多个属性值。
ID字段202可存储标识电子邮件会话的标识符值(例如GUID)。主题字段203可存储表示由ID字段202中标识符值标识的电子邮件会话主题的主题值。由其启动字段204可存储(例如通过名字和/或电子邮件地址)标识启动由ID字段202中标识符值标识的电子邮件会话的实体的由其启动值。启动时间字段206可存储表示由ID字段202中标识符值标识的电子邮件会话启动时间的启动时间值。最近字段207可存储(例如通过名字和/或电子邮件地址)标识最近发送包括在由ID字段202中标识符值标识的电子邮件会话中的电子邮件消息的实体的最近值。
最活跃字段208可存储(例如通过名字和/或电子邮件地址)标识向由ID字段202中标识符值标识的电子邮件会话提供最多电子邮件消息的实体的最活跃值。活跃参与者字段209可存储(例如通过名字和/或电子邮件地址)标识参与由ID字段202中标识符值标识的电子邮件会话的实体的一个或多个活跃参与者值。持续时间字段211可存储表示由ID字段202中标识符值标识的电子邮件会话的持续时间的持续时间值(例如从开始的电子邮件消息到最近的电子邮件消息)。消息数量字段212可存储在由ID字段202中标识符值标识的电子邮件会话中表示交换的消息数量的消息数量值。深度字段212可存储标识在由ID字段202中标识符值标识的电子邮件会话中答复消息的嵌套的深度值。
此外,会话项目201还包括对应于包括在由ID字段202中标识符值标识的电子邮件会话中的每个电子邮件消息(例如消息项目122、123和124)的每个消息字段214。每个消息字段214包括诸如消息项目221和231的一个或多个消息项目的属性。在每个消息项目内,所示数据字段可存储表示和/或标识包括在由ID字段202中标识符值标识的电子邮件会话中的相应电子邮件消息的一个或多个属性的一个或多个属性值。
发送时间字段222和232可存储表示分别发送由消息项目221和222表示的电子邮件消息的发送时间值。发送者字段223和233可存储(例如通过名字和/或电子邮件地址)标识分别发送由消息项目221和222表示的电子邮件消息的实体的发送者值。摘要字段234和244可存储分别表示由消息项目221和222表示的电子邮件消息的内容(例如文本)摘要的摘要值。可略去来自父电子邮件消息的盲目引用文本。
会话索引字段226和236可存储标识在由ID字段202中标识符值标识的电子邮件会话中分别由消息项目221和222表示的电子邮件消息的适当位置的会话索引值。链接字段227和337可存储将由ID字段202中标识符值标识的电子邮件会话链接到分别由消息项目221和222表示的电子邮件消息的链接值。在某些实施例中,链接字段是存储URL值或某些其它类型URI值的统一资源标识符“URI”字段或统一资源定位器(“URL”)字段。
接收者Δ字段228和238可存储(例如通过名字和/或电子邮件地址)表示从与相应父消息相关的分别由消息项目221和222表示的电子邮件消息中添加或移除的实体列表的接收者Δ值。例如,可以是从实体A发送到实体B、C、D的父消息。响应于接收父消息,实体D可向实体A、C、E发送一子消息(例如对父消息的答复)。因而,子消息的接收者Δ值可以是表示实体B已被移除而实体E被添加的一个列表。
在消息项目221和231之前、中间和之后的省略号表示每个消息字段214可包括消息项目221和231之前、中间和之后的一个或多个其它消息项目。
在某些实施例中,超文本标记语言(“HTML”)主体进行计算用于会话项目,从而会话项目可在用户界面(例如用户界面136)上显示。HTML主体使用存储在会话项目201各字段中属性值的可扩展类型语言(“XSL”)变换来计算。HTM主体可响应于呈现会话项目的请求而动态生成。
会话代理106(或任何其它会话代理)可被配置成处理一个或多个消息相关事件。在某些实施例中,会话代理106被配置成处理新电子邮件消息的抵达或现有电子邮件消息的更新。图3示出用于更新消息会话数据的方法300的示例流程图。方法300将参照计算机体系结构100中的组件和数据以及数据结构200的数据字段进行描述。
方法300包括接收电子邮件消息的动作(动作301)。例如,计算机系统103可接收消息141或消息143。方法300包括将所接收的电子邮件消息链接到表示电子邮件会话的相应电子邮件会话项目的动作(动作302)。例如,会话代理106可在系统存储器内为消息141或消息143创建一消息项目(例如消息项目122)。会话代理106随后可将会话项目127链接到存储器内的消息项目。会话项目127可包括表示电子邮件会话的属性的多个会话属性字段(例如会话项目201的字段)。
方法300包括保持所接收电子邮件消息与相应的电子邮件会话项目的链接的动作(动作303)。例如,会话代理106可将消息项目122(对应于消息141或消息143的消息项目)存储在消息先进先出缓存区113中。链接151也可存储在项目存储器107中。因而,链接151更为持久。例如,当链接151存储在项目存储器107之后,链接151在计算机系统103的电源关闭后可继续存在。链接151甚至在计算机系统103故障时仍可继续存在。因此,随后可访问会话项目127以确定所接收的电子邮件消息(例如消息141或消息143)被包括在电子邮件会话中。
方法300包括响应于接收所接收的电子邮件消息而改变一个或多个会话属性值以适当反映电子邮件会话的属性的动作(动作304)。例如,会话项目106可响应于接收消息141或消息143而改变会话项目127的一个或多个会话属性值以适当反映电子邮件会话的属性。在某些实施例中,与会话项目201中数据字段相似的一个或多个数据字段响应于接收电子消息而更新。
对于一个新创建的会话项目,标识符值可设置为所接收电子邮件消息的会话GUID并存储在相应的ID字段中。此外,对于一个新创建的会话项目,主题值可设置为所接收电子邮件消息的会话主题并存储在相应的主题字段中。当所接收的电子邮件消息是电子邮件会话中的第一个电子邮件消息时,由其启动值可被设置为所接收电子邮件消息的发送者(例如名字和/或电子邮件地址)并存储在相应的由其启动字段中。此外,当所接收的电子邮件消息是电子邮件会话中的第一个电子邮件消息时,启动时间值可被设置为所接收电子邮件会话的发送时间并存储在相应的启动时间字段。
当所接收的电子邮件消息是电子邮件会话中的最近电子邮件消息时,最近值可设置成所接收电子邮件消息的发送者(例如名字和/或电子邮件地址)并存储在相应的最近字段中。基于所接收电子邮件消息的发送者,会话代理106可计算电子邮件会话中的最活跃参与者。最活跃值可设置为经计算的最活跃参与者(例如名字和/或电子邮件地址)并存储在相应的最活跃字段中。基于所接收电子邮件消息的发送者,会话代理106可确定参与电子邮件会话的所有实体。活跃参与者值可设置为所有实体的列表(例如名字和/或电子邮件地址)并存储在相应的活跃参与者字段中。
考虑所接收的电子邮件消息,会话代理106可计算电子邮件会话中最早消息与最近消息之间的时间跨度。持续时间值可设置为经计算的时间跨度并存储在相应的持续时间字段中。考虑所接收的电子邮件消息,会话代理106可计算电子邮件会话中的电子邮件消息总量。消息数量值可设置为经计算的总量并存储在消息数量字段中。考虑所接收的电子邮件消息,会话代理106可确定电子邮件会话中的嵌套答复深度。深度值可设置为所确定的嵌套答复深度并存储在相应的深度字段中。
还可更新每个消息数据字段。当接收电子邮件消息时,发送时间值可设置为所接收电子邮件消息的发送时间并存储在相应的发送时间字段中。当接收电子邮件消息时,发送者值可设置为所接收电子邮件消息的发送者(例如名字和/或电子邮件地址)并存储在相应的发送者字段中。
当接收电子邮件消息时,获取所接收电子邮件消息的文本主体内容。如果所接收电子邮件消息是对另一邮件的答复,则扫描文本主体以消除任何从父消息中自动“引用”的文本。自动消除引用文本可通过扫描表示引用文本开始的字符模式(例如“-----------------”和“____________”是两种这样的模式)来完成。如果所接收电子邮件消息的唯一文本内容比阈值数量(例如1000个字符)多,则仅保留阈值数量(例如1000)的字符。摘要文本值被设置为唯一文本内容并存储在相应的摘要字段中。
当接收电子邮件消息时,会话索引值可设置为所接收电子邮件消息上的会话索引属性并存储在相应的会话索引字段中。当接收电子邮件消息时,链接值可设置为与所接收电子邮件消息的链接(例如URL)并存储在相应的链接字段中。
当接收电子邮件消息时,计算接收者Δ值。当所接收的电子邮件消息不是对电子邮件会话中现有电子邮件消息的回答时,接收者Δ值可简单设置为所接收电子邮件消息中接收者的全列表。另一方面,当所接收的电子邮件消息在电子邮件会话中具有父电子邮件消息时,所接收电子邮件消息的接收者列表与父电子邮件消息的接收者列表相比较。如果接收者列表相同,则不设置接收者Δ值。如果接收者列表不相同,则注明不仅包括由不在父电子邮件消息中但添加到所接收电子邮件消息的新接收者,而且包括不在所接收电子邮件消息中但出现在父电子邮件消息中的接收者的实际差异。接收者Δ值可设置为所注明的差异并存储在相应的接收者Δ字段中。
现在参看图4,图4示出用于执行电子邮件会话操作的方法400的示例流程图。方法400将参照计算机体系结构100中的组件和数据以及数据结构200的数据字段描述。
方法400包括接收要对电子邮件会话执行的操作的指示的动作(动作401)。例如,计算机系统103可接收会话命令146,诸如创建新会话或打开、移动、或删除现有会话的命令。会话命令146可以是手动输入的命令或者自动化的命令。例如,用户可操作输入装置(例如键盘或鼠标)来在用户界面136上输入会话命令146(或者导致会话命令146的数据)。或者,会话命令146可由电子邮件规则或计算机系统133上的其它自动化过程引起。会话命令也可在计算机系统103内部生成,诸如在消息服务器104的消息处理管线中。在某些实施例中,接收电子邮件消息是要对电子邮件会话执行的操作的指示。
方法400包括标识包括在电子邮件会话中的一个或多个电子邮件消息的动作(动作402)。例如,会话代理106可标识由消息项目122、123和124表示的电子邮件消息包括在由会话项目127表示的电子邮件消息中。会话代理106可使用GUID来标识电子邮件消息。例如,会话代理106可使电子邮件消息标题内(例如标题142或144)的GUID与会话项目中(例如存储在ID字段202)的GUID相匹配。或者,会话代理106可扫描每个消息字段(例如每个消息字段214)来标识包括在会话项目中的消息项目。例如,消息代理106可扫描存储在链接字段中(例如链接字段227和237)的链接(例如URL)以标识电子邮件消息。
方法400包括响应于所接收的要对电子邮件会话执行操作的指示而对已标识的一个或多个电子邮件消息的每一个执行相应的相关操作的动作(动作404)。例如,会话代理106可使相应的相关动作响应于所接收的要对由会话项目127表示的电子邮件会话执行操作的指示而对由消息项目122、123和124表示的消息执行。因而,发出对电子邮件会话执行操作的命令可导致相应的相关操作对包括在电子邮件会话中的所有电子邮件消息执行。
例如,删除电子邮件对话可使得包括在电子邮件会话中的所有电子邮件消息被删除。打开电子邮件会话可使得包括在电子邮件会话中的所有电子邮件消息被打开。
将电子邮件会话移到一文件夹可使得包括在电子邮件会话中的所有电子邮件消息被移到同一位置,诸如与电子邮件会话相同的文件夹或不同文件夹(即使电子邮件消息在会话被移动之后才接收)。例如,当电子邮件会话被移到“工作”文件夹时,会话代理106扫描所有邮件文件夹并标识包括在电子邮件会话中的电子邮件消息(例如使用GUID)。会话代理106将所有已标识的电子邮件消息移到工作文件夹。会话代理106还将包括在该电子邮件会话中的任何后来接收的电子邮件消息移到工作文件夹。
或者,当电子邮件会话被移到“略去会话”文件夹时,会话代理106扫描所有邮件文件夹并标识包括在电子邮件会话中的电子邮件消息(例如使用GUID)。会话代理106将所有已标识的电子邮件消息移到已删除项目文件夹。会话代理106还将包括在该电子邮件会话中的任何后来接收的电子邮件消息移到已删除项目文件夹。
例如,当接收消息141或消息143时,会话代理106可在“略去会话”文件夹中检查对应于所接收电子邮件消息的现有会话项目的出现(例如使用GUID作为相互关系的关键字)。类似于与消息项目的链接,会话项目还可包括与文件夹项目(例如在文件夹先进先出缓存区112中)的链接。会话项目与文件夹项目的链接可表示会话项目在文件夹项目表示的文件夹中。因而,当会话项目出现在略去会话文件夹中时(例如当用户已表示优先选择略去包括在电子邮件会话中的电子邮件消息时),会话代理106将所接收的电子邮件消息传送到“已删除项目”文件夹中(完成用户的优选)。
另一方面,当相应的会话项目未出现在略去会话文件夹中时,会话代理106可在“会话”文件夹中检查对应于所接收电子邮件消息的现有会话项目的出现(例如使用GUID)。如果相应的会话项目不存在,则新的会话项目在会话文件夹中创建。如果相应的会话项目存在,则现有的会话项目打开。带有相关消息会话数据的新的或现有的会话项目的属性值被更新(例如根据方法300)。
现在参看图5,图5示出用于呈现消息会话数据的方法的示例流程图。方法500将参照计算机体系结构100中的组件和数据以及数据结构200的数据字段进行描述。
方法500包括接收呈现包括一个或多个电子邮件消息的电子邮件会话的消息会话数据的命令的动作(动作501)。例如,用户界面136可接收请求由会话项目127表示的电子邮件会话的消息会话数据的用户输入。用户输入可包括,例如选择表示电子邮件会话的图标或在用户界面136上输入查询数据。或者,电子邮件规则或其它自动化过程(在计算机系统103或计算机系统133上)可生成呈现消息会话数据的命令。在某些实施例中,会话命令146(例如包括GUID)从计算机系统133发送到计算机系统103。
方法500包括访问表示电子邮件会话的电子邮件会话项目的动作(动作502)。例如,会话代理106可访问会话项目127。方法500包括从电子邮件会话项目中检索表示电子邮件会话属性的持续会话属性值的动作(动作503)。例如,会话代理106可从类似于数据结构200的数据结构的数据字段中检索一个或多个已存储值。
方法500包括呈现检索的会话属性值以及一个或多个电子邮件消息的一部分的动作(动作504)。例如,用户界面136可呈现从会话项目127中检索的属性值以及由消息项目122、123和124表示的电子消息的一部分。图6示出用于呈现消息会话数据的示例用户界面屏幕600。
在用户界面屏幕600中示出的是主题601、消息数量602、持续时间603、参与者604以及最活跃参与者606。主题601是可从主题字段203中检索的被呈现电子邮件会话的主题。消息数量602表示包括在被呈现电子邮件会话中的电子邮件消息数量,并可从消息数量字段212检索。持续时间603表示可从持续时间字段211检索的被呈现会话的时间跨度。参与者604表示参与电子邮件会话的实体并可从活跃参与者字段209中检索。最活跃参与者606表示发送最多包括在被呈现电子邮件会话的电子邮件消息的实体并可从最活跃字段207中检索。
还在用户界面屏幕600中示出的是每个消息数据611。每个消息数据611呈现包括在被呈现电子邮件会话中的一个或多个电子邮件消息的一部分。例如,发送者(例如发送者612)对包括在被呈现电子邮件会话中的每个电子邮件消息呈现。发送者表示发送相应电子邮件消息(例如消息141)的实体并可从相应消息项目(例如消息项目221)中的发送者字段(例如发送者字段223)检索。摘要(例如摘要文本614)对包括在被呈现电子邮件会话中的每个电子邮件消息呈现。摘要呈现相应电子邮件消息(例如消息141)的主体的一部分并可从相应消息项目(例如消息项目221)中的摘要字段(例如摘要字段224)检索。
链接(例如链接617)对包括在被呈现电子邮件会话中的每个电子邮件消息呈现。链接提供对相应电子邮件消息(例如消息141)的全部主体的访问并可从相应消息项目(例如消息项目221)中的链接字段(例如链接字段227)检索。发送时间(例如发送时间613)对包括在被呈现电子邮件会话中的每个电子邮件消息呈现。发送时间表示发送相应电子邮件消息(例如消息141)的时间并可从相应消息项目(例如消息项目221)中的发送时间字段(例如发送时间字段222)检索。
添加参与者(例如添加参与者616和619)和移除参与者(例如移除参与者618)对包括在被呈现电子邮件会话中的每个电子邮件消息呈现。添加参与者和移除参与者可从相应消息项目(例如消息项目221)中的接收者Δ字段(例如接收者Δ字段224)检索。因而,当呈现电子邮件会话时,可标识接收的包括在被呈现电子邮件会话中的每个电子邮件消息的实体。
现在参看图7,图7示出适于本发明诸原理的操作环境。图7和以下论述旨在对本发明可在其中实现的适当计算环境提供简要、一般的说明。尽管不是必需的,本发明在计算机可执行指令的一般上下文环境中进行了描述,诸如由计算机系统执行的程序模块。通常,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。计算机可执行指令、相关联数据结构、以及程序模块表示用于执行在此揭示的诸方法动作的程序代码方法的示例。
参照图7,用于实现本发明的示例系统包括计算机系统720形式的通用计算装置,它包括处理单元721、系统存储器722以及把包括系统存储器的各种系统组件耦合到处理单元721的系统总线723。处理单元721可执行被设计成实现计算机系统720的特征(包括本发明特征)的计算机可执行指令。系统总线723可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线架构的任一种的局部总线。系统存储器包括只读存储器(ROM)724和随机存储器(RAM)725。含有帮助如启动期间在个人计算机720中元件之间传递信息的基本例程的基本输入/输出系统(BIOS)726被存储在ROM724中。
计算机系统720还包括读取和写入硬盘739的硬盘驱动器727、读取或写入可移动磁盘729的磁盘驱动器728、以及读取或写入诸如CD-ROM或其它光学介质等可移动光盘731的光盘驱动器730。硬盘驱动器727、磁盘驱动器728和光盘驱动器730分别通过硬盘驱动器接口732、磁盘驱动器接口733和光盘驱动器接口734连接至系统总线723。诸驱动器及其相关联计算机可读介质为计算机720提供计算机可读指令、数据结构、程序模块和其它数据的非易失性储存。尽管在此所述示例性环境采用了硬盘739、可移动磁盘729和可移动光盘731,但也可使用其它类型的用于存储数据的计算机可读介质,包括磁带盒、闪存卡、数字多功能盘、Bernoulli卡、RAM、ROM等等。
包括操作系统735、一个或多个应用程序736、其它程序模块737和程序数据738的程序代码手段包含一个或多个程序模块,可存储在硬盘739、磁盘729、光盘731、ROM724或RAM725中。用户可通过诸如键盘740、定位装置742或包括诸如话筒、操纵杆、游戏垫、扫描仪等的其它输入装置(未示出)把命令和信息输入计算机系统720。这些和其它输入装置常常通过与系统总线732相耦合的输入/输出接口746连接到处理单元721。输入/输出接口746逻辑上表示各种各样不同接口的任一种,诸如串行端口、PS/2接口、并行端口、通用串行总线(USB)接口、或电气和电子工程师协会(“IEEE”)1394接口(即火线接口),或甚至可以在逻辑上表示不同接口的组合。
监视器747或其它显示装置也通过视频接口748和系统总线723相连。其它外围输出装置(未示出),如扬声器和打印机,也可连接到计算机系统720上。
计算机系统720可与诸如办公室范围或企业范围计算机网络、家庭网络、内联网、和/或因特网相连。计算机系统720可经这种网络与外部源交换数据,诸如远程计算机系统、远程应用程序、和/或远程数据库。
计算机系统720包括网络接口753,通过它计算机系统720接收来自外部源的数据和/或将数据传送到外部源。如图7所示,网络接口753便于经链接751与远程计算机系统783的数据交换。网络接口753在逻辑上可表示一个或多个软件和/或硬件模块,比如网络接口卡及相应的网络驱动器接口标准(“NDIS”)堆栈。链接751表示网络的一部分(例如以太网分段),而远程计算机系统783表示网络的节点。
类似地,计算机系统720包括输入/输出接口746,通过它计算机系统720接收来自外部源的数据和/或将数据传送到外部源。输入/输出接口746经链接759与调制解调器754(例如标准调制解调器、电缆调制解调器、或数字订购线路(“DSL”)调制解调器)耦合,通过它计算机系统720接收来自外部源的数据和/或将数据传送到外部源。如图7所示,输入/输出接口746和调制解调器754便于经链接752与远程计算机系统793的数据交换。链接752表示网络的一部分,而远程计算机系统793表示网络的节点。
尽管图7示出本发明的适当操作环境,本发明诸原理可在能实现(如果必要用适当更改)本发明诸原理的任何系统中采用。图7中所示的环境仅是说明性的,且并非旨在表示本发明诸原理可在其中实现的各种各样环境的一小部分。
根据本发明,包括消息服务器、会话代理、消息客户机、用户界面的各模块以及包括消息项目、会话项目、文件夹项目、电子邮件消息、消息会话命令、和消息会话数据的相关联数据可被存储,并从与计算机系统720相关联的任一计算机可读介质中访问。例如,这种模块的一部分以及相关联程序数据的一部分可包括在操作系统735、应用程序736、程序模块737和/或程序数据738中用于存储在系统存储器722中。
当诸如磁性硬盘739的大容量存储装置与计算机系统720耦合时,这种模块及相关联程序数据也可存储于大容量存储装置中。在网络化环境中,所示与计算机系统720相关的程序模块,或其一部分可存储在远程存储器存储装置中,诸如与远程计算机系统783和/或远程计算机系统793相关联的系统存储器和/或大容量存储装置。这种模块的执行可在如前所述的分布式环境中执行。
本发明可以其它特定形式体现而不背离其精神或基本特征。所述实施例在全部方面中都仅被视为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而非前面的说明书指示。出自权利要求书等效实体的含义和范围内的所有变化都被包括在其范围之内。