专利名称::一种邮件推送系统及其推送方法
技术领域:
:本发明属于计算机信息处理和无线通讯
技术领域:
,尤其是涉及一种ippush和心跳push相结合的服务,即保证用户有新邮件到达时,及时push到手机,又保证用户使用任何接入点都能够正常收取邮件的邮件推送系统及其推送方法。
背景技术:
:随着移动互联网近两年的迅猛发展,使用手机进行邮件收发的用户也迅速增长,一款能够支持国内外各大主流邮箱、支持企业邮箱、支持邮件附件在线阅读,能够及时将邮件push到手机的软件很有前景。要做好该软件,要突破解决的技术点有邮件推送处理、海量存储处理、用户并发处理、邮件代收技术、附件阅读技术、正文解析技术、手机端流量问题、手机端电量问题、手机端体验问题、上网接入点问题等等。PushMail是将邮件主动推送到手机终端的移动邮件解决方案,能随时将企业邮件推送到用户手机终端上,实现关键信息随时、随地、随身获得。现有技术存在的邮件push技术主要包括Smspush中国移动安装有一套邮件推送网关(GEGW=GPRSEmailGateway),负责向手机发送EMN短信,建立和维护CEF和手机之间的加密传输通道;在企业端安装邮件代理网关(CEF=CorporationEmailForward),负责从企业邮件服务器收取邮件缓存在本地,负责对邮件附件进行压缩和转换;在用户手机上安装PushMail客户端软件,在手机上提供一个完整的邮箱功能,负责接收、存储、转发、回复、新建邮件。当有新邮件到达时,CEF通过GEGW发送EMN短信到手机终端,触发用户手机PushMail客户端,通过GPRS网络连接GEGW,与CEF建立一条端到端的SSL加密通道连接,取得邮件。此种push方式,专门需要SP支持,不够灵活。Ippush通过网络,手机客户端可以发送一个HTTP请求到服务器,告知服务器客户端需要这个用户的新邮件通知,当服务器收到一封新邮件时,就会回复这个HTTP请求;客户端通知用户收到了新邮件,并同时再次与服务器建立连接,等待下一封信。0006]该技术,主要存在的缺陷包括1、需要保持网络在线。无论使用手机还是电脑,设备必须保持互联网在线。2、IPPUSH在保持互联网在线时基本不产生流量。3JHKSMSPUSH,IPPUSH不需要SP支持,支持更灵活。IMAPIDLEPushJMAPIDLE模式是IMAP协议的一项高级功能,在这种模式下,客端登录连接服务器后并无主动查询新邮件的动作,而是停留在IDLE(空闲)状态,当服务器接收到新邮件后通知客端,客端再开始查询新邮件的动作,此动作完成后,客端重新回到空闲状态,所以也可以算是一种push的方式。但是这种push方式,受到接入点的限制,用户如果选择cmwap接入点,则服务会非常不稳定。
发明内容通过对现有技术的的研究,我们可以得出这样一个结论所谓真正的邮件Push技术,就是要求一封邮件服务器收到后,可以在一个非常短的时间(数秒)内通知客户端,而且不能产生明显的流量和电量消耗。那么“心跳Push”的定义,就是通过定时查询的方式由客户端主动收信的,那么这种方式必将产式必将产生一定的延时。我们可能会想,如果缩短查询的时间间隔呢?比如每分钟或者每半分钟查询一次?如果这样做,必然消耗手机很多的电量和流量。因此,在本发明中,为了克服现有技术存在的缺陷,采用一种ippush和心跳push相结合的服务,即保证用户有新邮件到达时,及时push到手机,又保证用户使用任何接入点都能够正常收取邮件。为实现上述目的,本发明采用如下技术方案一种邮件推送系统,所述系统包括手机终端,内容代理网关和邮件服务器;所述内容代理网关包括中间件模块、用户管理模块、邮件代收服务模块、邮件处理模块;所述的中间件模块负责调度、数据采集和过滤,用户的请求通过中间件模块进行分发,响应通过中间件进行过滤;所述用户管理模块负责用户注册、匿名注册、登录、退出、挂失和激活的管理;所述邮件代收模块负责根据队列表的任务信息向邮箱服务器pop邮件;所述邮件处理模块负责获取邮件列表、提取邮件正文、下载附件、发送邮件、配置同步、增删或者修改邮箱的服务。优选的是所述的手机终端通过ippush与所述内容代理网关进行网络通讯,所述内容代理网关服务端通过心跳push每隔一段时间要主动与所述邮件服务器握手通讯。更优的是,所述系统还包括短信提醒处理模块和邮件发送服务模块;所述的短信提醒处理模块负责生成短信发送到手机终端提醒用户收新邮件;所述邮件发送服务模块负责代理发送邮件。更优的是,所述系统还包括所述邮件处理模块还包括附件预览转换模块,所述的附件预览转换模块负责解决用户实现在线预览不同格式的附件。本发明同时还提供了一种邮件推送方法,包括所述邮件代收模块检测到用户有新邮件到达时,所述短信提醒处理模块生成短信发送到手机终端提醒用户收新邮件;所述手机终端向邮件处理模块负请求阅读邮件,所述邮件处理模块将新邮件的头部信息或者邮件正文推送到手机,实现邮件的推送。优选的是所述需要推送的邮件附带有附件,所述手机终端向邮件处理模块发送附件下载的请求,所述邮件处理模块将附件推送到手机终端;或者所述手机终端向邮件处理模块发送附件预览请求,所述邮件处理模块将各种附件转换成手机终端能识别的格式,将转换后的格式推送到手机终端,供用户在线预览。本发明所述的邮件推送系统解决了邮件push问题,用户有新邮件到达时,系统会立即将邮件信息push到手机。本发明解决了通过WAP网关无法维持连接状态的问题,我们采用心跳连接方式,每个用户产生独立的任务ID,这样的实现方式,同样可以将邮件推送到手机,并且灵活使用服务器资源,大大提高服务器利用率。另外,本发明还解决了手机端文件分页预览问题,通过两种技术手段实现该功能,用户能够直接在手机端阅读附件,我们已突破分页的技术难点,用户不仅能清晰的翻阅附件,而且通过分页,为用户节省了大量的流量。图1为本发明所述的邮件推送系统结构示意图;图2为本发明所述的中间件模块处理流程示意图;图3为本发明所述的用户管理模块处理流程示意图;图4为本发明所述的获取邮件列表模块处理流程示意图;图5为本发明所述的邮件代收模块处理流程示意图;图6为本发明所述的附件预览模块处理流程示意图。具体实施例方式下面结合附图和具体实施方式,对本发明做进一步详细说明。如图1所示的邮件推送系统,包括手机终端,内容代理网关和邮件服务器;所述内容代理网关包括中间件模块、用户管理模块、邮件代收服务模块、邮件处理模块;中间件模块负责调度、数据采集和过滤,用户的请求通过中间件模块进行分发,响应通过中间件进行过滤;用户管理模块负责用户注册、匿名注册、登录、退出、挂失和激活的管理;邮件代收模块负责根据队列表的任务信息向邮箱服务器pop邮件;邮件处理模块负责获取邮件列表、提取邮件正文、下载附件、发送邮件、配置同步、增删或者修改邮箱的服务。本实施例所述的中间体模块,主要负责调度、数据采集、过滤的工作,用户的请求通过中间件进行分发,响应通过中间件进行过滤。协议采用标准HTTP格式,中间件负责根据协议中cmd参数将请求转发至其他模块。转发过程通过post完成,中间件负责组装post协议,向对应的WEB服务发起post请求。中间件负责合法性过滤,将解密或解压失败的请求按非法处理。加密解密采用ictea算法,压缩采用gzip算法。中间件负责内容过滤,response时,将手机端无法处理的HTML标签过滤和替换,将内容过大的数据通过gzip算法进行压缩。中间件负责数据采集,将相关活跃信息插入到数据统计表。处理流程如图2所示,它的处理步骤如下1)分解手机端的请求信息,获取参数iszip的状态。2)如果iszip=1,表示数据进行过压缩,调用gzip解压处理,得到解压后的数据。3)数据解压后,分解请求内容,判断cmd的内容,如果是01开头表示为用户管理模块的请求;如果02开头表示为邮件处理模块请求。4)如果是02开头,需要对请求参数IMEI进行解密操作,调用ICTEA函数进行解密。如果解密成功,表示请求合法,重新组装不带压缩的数据,以post形式提交到用户管理(usermanager)服务器,具体提交到哪台用户管理服务器处理,由负载均衡服务决定;如果解密失败,证明是非法请求,直接response。5)如果是01开头,需要对请求参数CXID进行解密操作,调用ICTEA函数进行解密。如果解密成功,表示请求合法,继续分解请求信息,异步调用数据采集接口,完成数据采集,重新组装不带压缩的数据,以post形式提交到邮件处理(mailproxy)服务器,具体提交到哪台邮件处理服务器,由负载均衡服务决定;如果解密失败,证明是非法请求,直接response。6)、当数据从mailproxy或usermanger处理完返回时,负责对返回数据进行处理。如请求类型为获取邮件正文,得到mailproxy的响应后调用正文解析的服务,该服务主要是解析正文中的表格、图片、连接和文字,将表格转换为手机屏幕可正常显示的比例,将图片进行压缩并生成绝对路径。除此之外,对于一些大于300K的数据还需进行压缩后,重新组装response内容,push给手机。本实施例所述的用户管理模块包括注册、匿名注册、登录、退出、用户挂失、激活用户。匿名注册功能解决了用户繁琐的注册操作,手机端通过IMEI进行注册,如果IMEI无法获取,则生成一个15位随机数。用户注册成功后,会改变用户状态和初始化配置信息。用户登录后,修改用户状态,根据用户手机的接入方式,将其分为ippush用户和心跳push用户。返回相关配置信息。两种用户的任务信息由不同的数据表存储,不同的服务逻辑处理,分布式管理。用户退出时,修改用户状态,清除相关任务信息。处理流程如图3所示,它的处理步骤如下1)分解来自middleware的请求,获得CMD内容,根据CMD内容调用不同的服务。2)注册请求,获得请求参数中的IMEI号,根据IMEI号进行注册,如存在此用户则返回异常信息,否则调用登录模块完成用户数据初始化工作,返回注册后的CXID、系统配置信息和OS的最新版本。3)登录请求,获得请求参数中的CXID,根据CXID号判断是否存在该用户,如果存在则初始化用户数据,返回注册后的CXID、系统配置信息和OS的最新版本,否则返回异常fn息ο4)用户数据初始化分两种情况,当手机端采用长连接的方式访问服务器时,登录成功后,向push队列表插入一条任务数据,主要负责处理轮询pop邮件和push系统的短消息;当手机采用短连接的方式访问服务器时,登录成功后,修改用户登录状态信息。本实施例的邮件处理模块包括获取邮件列表服务、提取邮件正文服务、下载附件服务、发送邮件服务、增加邮箱服务、修改邮箱服务、删除邮箱服务、配置同步服务。获取邮件列表服务是将新邮件的头部信息push到手机。针对不同的push方式,该模块的处理逻辑截然不同。手机端通过WAP网关进行网络通讯,服务端按心跳push处理,这类联网方式每隔一段时间要主动与服务器握手,因此它的处理步骤如下1)手机端发送收取邮件的请求,服务端接到请求(request)后,在队列表增加一条收取邮件的任务信息,并将生成的任务key和心跳间隔返回(response)给手机,与此同时,如果数据库中有未push给手机的邮件,就一同返回。2)手机端根据心跳间隔的时间,发送心跳请求,每次心跳请求都带有key,服务器收到请求后,根据key到队列表中查询该任务的完成情况,当字段status=3的时候,表示任务完成,根据接口协议返回最终结果。如果字段statUS<>3,就将心跳时间间隔和收到的新邮件返回给手机。3)手机端收到服务器端返回的心跳时间为零时,停止请求,否则重复执行第二步。Ippush,手机端通过net接入点进行网络通讯,这类联网方式,用户在登录时建立了长连接。在push队列表中,增加了一条任务信息,并根据自定义的轮询算法,通过负载均衡原理,动态的代收用户邮件,当收到新邮件时,就立即推送(response)给手机。其处理流程如图4所示,它的处理步骤如下1)用户登录后,在push队列表中产生一条任务,该队列表的数据通过负载均衡算法生成。2)popAgent集群从这里获得任务数据,每个popAgent服务获取数据时,根据popid区分。3)popAgent负责去用户pop服务器获取邮件,通过邮件的ID判断是否是新邮件,当有新邮件时,根据邮件列表协议组装邮件列表,resopnse给手机。提取邮件正文服务是将邮件的ID发送给服务器,服务程序在数据库中查询到此ID对应的正文信息,通过HTML解析,将压缩后的正文push给手机。下载附件服务,当邮件存在附件,手机端收到某封邮件头时,即获得该邮件的所有附件ID,手机端根据附件ID发起请求,下载附件。发送邮件服务提供开放的接口,手机端根据发送协议将邮件正文、附件等以表单形式提交,服务端解析表单内容,重新组装发送协议,调用SMTP组件,发送邮件。邮箱的增、删、改是针对同步服务而设计,用户在手机端对邮箱进行操作后,按协议规范,向服务端发出同步请求。配置同步服务将用户的配置信息通过http协议传送至服务器,也可将服务器的最新配置获取到手机。其设计目的有两点,第一,系统级的配置发生改变时,能够及时push给用户;第二,用户的一些重要设置,在更换新手机后,同样可以一键恢复。整个mailproxy模块是系统的核心,ippush和心跳push的核心算法都在此模块中。在整个系统中,mailproxy起着桥梁的作用,对前端的用户请求做解析和响应,对后端的服务做分解和控制,中间的数据交互采用数据库。mailproxy可以集群式部署,通过负载均衡原理和用户请求方式,将任务插入到对应的任务表。本发明所述的邮件代收模块独立性非常好,可以单台机部署多个,也可以集群式部署,它主要负责根据队列表的任务信息向各大邮箱服务器pop邮件,每个popAgent服务可以建立多线程,多线程的数量跟服务器硬件和网络情况相关,可动态配置。popAgent分三种,一种处理心跳push的队列任务;一种处理ippush的队列任务;一种处理短信提醒的队列任务。popAgent支持SSL加密,pop过程中有重连和适配机制,当用户设置的用户名登录失败时,会尝试用带@的用户名去连接服务器。该服务有以下几个主要功能点连接pop服务器,获取邮件;过滤邮件,包括时间过滤、内容过滤;名单过滤,有红名单和黑名单;邮件数据库管理。具体处理流程如图5所示,它的处理步骤如下1)启动popAgent线程,读取配置文件,配置文件中记录每个popAgent最大允许建立多少pop子线程,每个子线程负责对单一邮箱执行pop服务。2)每个子线程根据配置文件的标志信息,从队列表中获取需处理的数据status=0,完成后将任务改成3,超时改成2,正在处理状态为1。3)得到新邮件,首先判断用户邮件数据库是否存在,不存在则创建,邮件数据库为sqlite。4)得到数据后,首先判断是否已经下载,然后判断数据是否符合过滤规则,如果符合,则将此邮件过滤,不会push给用户。5)过滤规则有时间、黑名单和邮件内容包含非法文字等。6)子线程任务完成后,自动获取下一条待处理数据,直到没有待处理任务。7本实施例所述的短信提醒处理(SendTask)服务模块独立性非常好,可以单台机部署多个,也可以集群式部署。该模块主要针对短信提醒功能开发。设置短信提醒的用户,可以不用开启邮件客户端也不落任何一封邮件。SendTask服务检查短信提醒队列表的处理情况,如果有新邮件,则将邮件数量和我们的一些介绍性文字以邮件正文的方式发送到用户设定的运营商邮箱。本实施例所述的邮件发送(smtpAgent)服务模块独立性非常好,可以集群式部署,他的主要功能是代理发送。设计的目的是为了防止被邮箱服务器封IP,因为一个IP如果频繁发送邮件,容易被邮箱服务器拒绝。发送邮件时,根据负载均衡算法,选择合适的smtpAgent服务发送邮件。为了解决用户在线查看附件的需求,随着移动互联网近两年的迅猛发展,使用手机进行移动办公的用户也迅速增长,其中的业务大多跟文件相关,如使用手机收发附件、用手机网盘管理文件等。诸多的文件,每次查看都需要下载到本地,这有三个弊端,其一下载文件会产生大量流量;其二文件的内容不一定是用户很关注的,浪费了下载流量;其三手机上不一定能打开此格式的文档,因此在手机上实现文件在线预览很有必要。附件预览根据文件的大小采用不同的处理方案,当文件小于IM的时候,使用openoffice组件进行处理,将文件转换成html,再对html进行解析,把每个table单独抽取出来作为一页;当文件大小超过IM的时候,openoffice处理经常会出现异常,为了解决这个问题,这类文件不调用openoffice处理,直接调用officecom组件处理,将文件转换成PDF,再将PDF转换成PNG图片,实现分页预览。具体流程如图6所示,它的处理步骤如下1)将文件ID传给附件处理模块,该模块从数据库中取出文件内容。2)判断文件大小,如果文件大于1M,调用office组件,将文件转换成PDF,将PDF的每一页转换为单独的图片,图片进行压缩处理,并生成绝对地址,嵌入HTML页面。如果文件小于等于1M,调用openoffice服务,将文件转换为HTML,对HTML进行解析,抓取其中的table生成处理后的HTML页面。3)将生成的HTML地址传给手机端,手机端调用浏览器查看。为了防止pop服务器拒绝我们的ip请求,在具体的实施例中,可以采用S0Cks5代理。当用户量到达一定规模的时候,需要动态的ip去获取邮件。根据负载均衡原理,动态的将pop请求通过这些代理服务器转发。s0cks5是一种透明的proxy协议,它工作在OSI模型中的第五层——会话层,很好的实现了认证,保密性等问题。它有非常详细的访问控制,比网络层有更多的控制手段,而且使用Socks5的代理服务器可隐藏内部网络结构,更重要的是socks5支持udp协议的Proxy。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域:
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。权利要求一种邮件推送系统,其特征是,所述系统包括手机终端,内容代理网关和邮件服务器;所述内容代理网关包括中间件模块、用户管理模块、邮件代收服务模块、邮件处理模块;所述的中间件模块负责调度、数据采集和过滤,用户的请求通过中间件模块进行分发,响应通过中间件进行过滤;所述用户管理模块负责用户注册、匿名注册、登录、退出、挂失和激活的管理;所述邮件代收模块负责根据队列表的任务信息向邮箱服务器pop邮件;所述邮件处理模块负责获取邮件列表、提取邮件正文、下载附件、发送邮件、配置同步、增删或者修改邮箱的服务。2.如权利要求1所述的邮件推送系统,其特征是所述的手机终端通过ippush与所述内容代理网关进行网络通讯,所述内容代理网关服务端通过心跳push每隔一段时间要主动与所述邮件服务器握手通讯。3.如权利要求2所述的邮件推送系统,其特征是,所述系统还包括短信提醒处理模块和邮件发送服务模块;所述的短信提醒处理模块负责生成短信发送到手机终端提醒用户收新邮件;所述邮件发送服务模块负责代理发送邮件。4.如权利要求3所述的邮件推送系统,其特征是,所述系统还包括所述邮件处理模块还包括附件预览转换模块,所述的附件预览转换模块负责解决用户实现在线预览不同格式的附件。5.一种包括权利要求4所述邮件推送系统的邮件推送方法,包括所述邮件代收模块检测到用户有新邮件到达时,所述短信提醒处理模块生成短信发送到手机终端提醒用户收新邮件;所述手机终端向邮件处理模块负请求阅读邮件,所述邮件处理模块将新邮件的头部信息或者邮件正文推送到手机,实现邮件的推送。6.如权利要求5所述的邮件推送方法,其特征是所述需要推送的邮件附带有附件,所述手机终端向邮件处理模块发送附件下载的请求,所述邮件处理模块将附件推送到手机终端;或者所述手机终端向邮件处理模块发送附件预览请求,所述邮件处理模块将各种附件转换成手机终端能识别的格式,将转换后的格式推送到手机终端,供用户在线预览。全文摘要本发明公开了一种邮件推送系统及其推送方法,所述邮件推送系统包括手机终端,内容代理网关和邮件服务器;所述内容代理网关包括中间件模块、用户管理模块、邮件代收服务模块、邮件处理模块。本发明所述的邮件推送系统解决了邮件push问题,用户有新邮件到达时,系统会立即将邮件信息push到手机。本发明解决了通过WAP网关无法维持连接状态的问题,我们采用心跳连接方式,每个用户产生独立的任务ID,这样的实现方式,同样可以将邮件推送到手机,并且灵活使用服务器资源,大大提高服务器利用率。文档编号H04L29/08GK101951348SQ20101028660公开日2011年1月19日申请日期2010年9月17日优先权日2010年9月17日发明者车荣全申请人:北京百纳科创信息技术有限公司