邮件同步方法、装置、计算机设备和存储介质转让专利
申请号 : CN202110775227.3
文献号 : CN113242174B
文献日 : 2021-11-09
发明人 : 蒋宁涛 , 钟超文
申请人 : 太平金融科技服务(上海)有限公司深圳分公司
摘要 :
权利要求 :
1.一种邮件同步方法,其特征在于,所述方法包括:从邮箱服务器获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据和文件数据,所述文件数据包括邮件正文和/或附件;
将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库,所述第一数据库用于在终端同步邮件时,将所述邮件基本数据发送至终端,所述文件数据库用于在所述终端同步邮件的文件数据时,将所述文件数据以静态资源的方式发送至终端;
每台用于对所述增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;所述获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据,包括:
通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据;
所述多个线程中包括执行线程和主线程;所述通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过所述主线程进行线程竞争以确定管理线程;
通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中;
通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;
通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据;
所述将所述增量邮件均衡分配至各个进程中,包括:获取所述增量邮件对应的接收地理位置;
选取与所述接收地理位置对应的进程;
将所述增量邮件均衡分配至所选取的进程中。
2.根据权利要求1所述的方法,其特征在于,所述获取增量邮件,包括:当存在新邮件到达时,则生成新邮件到达日志;
对所述日志进行清洗获得增量邮件事件,并将增量邮件事件存储至缓存队列中;
根据所述增量邮件事件获取到增量邮件。
3.根据权利要求1所述的方法,其特征在于,所述对所述增量邮件进行处理以得到邮件基本数据以及文件数据之后,还包括:根据第一数据库中已经缓存的邮件基本数据对处理得到的邮件基本数据进行去重处理;
根据所述文件数据库中已经缓存的文件数据对处理得到的文件数据进行去重处理。
4.根据权利要求1所述的方法,其特征在于,所述通过所述主线程进行线程竞争以确定管理线程,包括:
通过所述主线程周期性地在进程管理表中记录对应的进程的进程状态;
通过所述主线程每隔第一预设时间间隔查询所述进程管理表中各个进程的进程状态,并根据预设管理线程选取规则从所述进程状态为活跃状态的进程中选取管理线程。
5.根据权利要求1所述的方法,其特征在于,所述通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中,包括:通过所述管理线程查询进程管理表以获取进程状态为活跃状态的进程,以及获取所述活跃状态的进程的当前任务量,所述当前任务量通过用户数量表示;
通过所述管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对所述邮件推送记录表中的用户标识进行标准化;
根据所述活跃状态的进程的当前任务量以及标准化后的用户标识,将所述增量邮件均衡分配至各个进程中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:通过所述管理线程查询所述邮件推送记录表以获取超时任务;
通过所述管理线程将所述超时任务重新均衡分配至其他的活跃进程。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:通过所述管理线程定期清理所述邮件推送记录表以及进程管理表。
8.根据权利要求1所述的方法,其特征在于,所述通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中,包括:通过所述主线程每隔第二预设时间段获取对应进程的增量邮件,并对所述增量邮件按照用户名进行去重得到增量任务;
将所述增量任务缓存至对应的处理队列中。
9.根据权利要求8所述的方法,其特征在于,所述将所述增量任务缓存至对应的处理队列中,包括:
获取分配至对应进程中的增量邮件的用户的管理权限;
判断所述管理权限是否支持邮件缓存;
若是,则将所述增量任务缓存至对应的处理队列中。
10.根据权利要求8所述的方法,其特征在于,所述处理队列包括自动队列和手动队列;
所述将所述增量任务缓存至对应的处理队列中,包括:获取所述增量任务对应的拉取方式;
根据所述拉取方式将所述增量任务缓存至对应的处理队列中,其中所述拉取方式为手动拉取时,则将所述增量任务缓存之所述手动队列中,所述拉取方式为自动拉取时,则将所述增量任务缓存至所述自动队列中,所述手动拉取的优先级高于所述自动拉取。
11.根据权利要求1所述的方法,其特征在于,所述通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据,包括:通过所述执行线程获取缓存至对应的处理队列中的增量任务;
登录所述增量任务对应的用户的用户邮箱;
读取所述用户邮箱中的增量邮件,并对所述增量邮件进行处理,得到邮件基本数据以及文件数据。
12.根据权利要求11所述的方法,其特征在于,所述读取所述用户邮箱中的增量邮件,包括:
获取所述用户邮箱对应的待同步文件夹;
根据所述增量任务的同步方向,读取与所述待同步文件夹对应的邮件记录;
若是所述邮件记录为空,则读取所述文件夹的第一预设时间段中的邮件作为当前用户的增量邮件;
若是所述邮件记录不为空,则按照预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
13.根据权利要求12所述的方法,其特征在于,所述按照预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件,包括:获取邮件同步方向,并获取与所述邮件同步方向对应的预设逻辑;
根据所述预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
14.根据权利要求11所述的方法,其特征在于,所述对所述增量邮件进行处理,得到邮件基本数据以及文件数据,包括:判断所述增量邮件的数据量是否大于预设数据量,若是则将所述增量邮件的邮件正文拆分出来得到文件数据;
判断所述增量邮件是否含有附件,若是,则根据所述附件生成文件数据;
提取所述增量邮件的基本数据得到邮件基本数据。
15.根据权利要求1所述的方法,其特征在于,所述将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库之后,还包括:接收终端发送的邮件处理操作,并以事件的形式对所述邮件处理操作进行存储;
对所存储的事件进行大数据实时分析得到用户轨迹画像,所述用户轨迹画像用于判断对应的邮箱是否安全。
16.一种邮件显示方法,其特征在于,所述方法包括:周期性地从第一数据库同步邮件基本数据;所述邮件基本数据和文件数据是从邮箱服务器获取下载增量邮件,并对所述增量邮件进行处理得到的;具体地,每台用于对所述增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;所述基本数据以及文件数据是通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理得到的;所述多个线程中包括执行线程和主线程;所述邮件基本数据以及文件数据是通过所述主线程进行线程竞争以确定管理线程;通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中;通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理得到的;
且将所述增量邮件均衡分配至各个进程中,包括:获取所述增量邮件对应的接收地理位置;
选取与所述接收地理位置对应的进程;将所述增量邮件均衡分配至所选取的进程中;
当接收到邮件基本数据读取请求时,显示所述邮件基本数据;
判断是否接收到文件数据读取请求;
当接收到文件数据读取请求时,则从文件数据库以静态资源的方式读取对应的文件数据,并显示所述文件数据。
17.根据权利要求16所述的方法,其特征在于,所述周期性地从第一数据库同步邮件基本数据,包括:
周期性地从所述第一数据库提取的邮件基本数据,所述邮件基本数据包括邮件列表、邮件正文链接地址和/或附件链接地址。
18.根据权利要求17所述的方法,其特征在于,所述从文件数据库读取对应的文件数据,包括:
根据所述邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资源的方式获取对应的文件数据。
19.根据权利要求16所述的方法,其特征在于,所述周期性地从第一数据库同步邮件基本数据,包括:
获取本地的预设类型的邮件的邮件参数,并根据所述邮件参数获取本地邮件列表;
根据所述邮件参数从服务器获取预设数量的服务器端邮件列表;
将所述服务器端邮件列表与本地端邮件列表进行比对,以获取到差异邮件;
从第一数据库同步所述差异邮件的邮件基本数据。
20.根据权利要求19所述的方法,其特征在于,所述将所述服务器端邮件列表与本地端邮件列表进行比对之后,还包括:当所述服务器端邮件列表与本地端邮件列表相同时,则调用手动拉取接口向服务器发送手动拉取请求。
21.一种邮件同步装置,其特征在于,所述装置包括:拆分模块,用于从邮箱服务器获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据,并判断邮件正文是否大于预设大小,若大于预设大小,则将所述邮件正文拆分出来作为文件数据,并判断是否存在附件,若存在附件,则将附件也提取出来作为文件数据,所述文件数据包括邮件正文和/或附件;
分段存储模块,用于将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库,所述第一数据库用于在终端同步邮件时,将所述邮件基本数据发送至终端,所述文件数据库用于在所述终端同步邮件的文件数据时,将所述文件数据以静态资源的方式发送至终端;
每台用于对所述增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;所述拆分模块用于通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据;
所述多个线程中包括执行线程和主线程;所述拆分模块包括:竞争单元,用于通过所述主线程进行线程竞争以确定管理线程;
分配单元,用于通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中;
存储单元,用于通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;
拆分单元,用于通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据;
所述分配单元包括:
地理位置接收子单元,用于获取所述增量邮件对应的接收地理位置;
进程选取子单元,用于选取与所述接收地理位置对应的进程;
分配子单元,用于将所述增量邮件均衡分配至所选取的进程中。
22.一种邮件显示装置,其特征在于,所述装置包括:基本数据同步模块,用于周期性地从第一数据库同步邮件基本数据;所述邮件基本数据和文件数据是从邮箱服务器获取下载增量邮件,并对所述增量邮件进行处理得到的;具体地,每台用于对所述增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;所述基本数据以及文件数据是通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理得到的;所述多个线程中包括执行线程和主线程;所述邮件基本数据以及文件数据是通过所述主线程进行线程竞争以确定管理线程;通过所述管理线程获取增量邮件,并将所述增量邮件按照用户均衡分配至各个进程中;通过所述主线程将分配至对应进程中的增量邮件缓存至对应的进程的处理队列中;通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理得到的;且将所述增量邮件均衡分配至各个进程中,包括:获取所述增量邮件对应的接收地理位置;选取与所述接收地理位置对应的进程;将所述增量邮件均衡分配至所选取的进程中;
显示模块,用于当接收到邮件基本数据读取请求时,显示所述邮件基本数据;
判断模块,用于判断是否接收到文件数据读取请求;
文件数据同步模块,用于当接收到文件数据读取请求时,则从文件数据库以静态资源的方式读取对应的文件数据,并显示所述文件数据。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至15或16至20中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15或16至20中任一项所述的方法的步骤。
说明书 :
邮件同步方法、装置、计算机设备和存储介质
技术领域
背景技术
容本身比较大时,移动端需要耗费比较长的时间去解析邮件内容,由于邮件一般都设置了
超时机制,如果网络状况不佳,这会造成大邮件不能被正常收取,即邮件收取失败。
发明内容
用于在所述终端同步邮件的文件数据时,将所述文件数据发送至终端。
邮件基本数据以及文件数据,包括:
据,包括:
将所述增量任务缓存至所述自动队列中,所述手动拉取的优先级高于所述自动拉取。
端,所述文件数据库用于在所述终端同步邮件的文件数据时,将所述文件数据发送至终端。
文件数据存储至文件数据库,实现了邮件内容的分段存储,这样后续终端获取邮件的时候,
可以首先同步邮件基本数据,在需要同步文件数据的时候,再进行同步,也就是说对于大的
正文或附件等无需立刻显示,仅在需要的时候进行显示,从而减少一开始同步的数据量,避
免了由于耗时过长所导致的邮件出现超时的情况,保证了邮件的正常收取。
附图说明
具体实施方式
用于限定本申请。
104同步邮件,服务器104在获取到增量邮件后,对增量邮件进行处理以得到邮件基本数据
以及文件数据,文件数据包括邮件正文和/或附件,这样将邮件基本数据存储至第一数据
库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据发
送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据发送至终端102,实
现了邮件内容的分段存储,这样后续终端获取邮件的时候,可以首先同步邮件基本数据,在
需要同步文件数据的时候,再进行同步,也就是说对于大的正文或附件等无需立刻显示,仅
在需要的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮
件出现超时的情况,保证了邮件的正常收取。其中,终端102可以但不限于是各种个人计算
机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器
或者是多个服务器组成的服务器集群来实现。
端层、xweb平台层、邮件代理层以及邮件接口层。
志分析功能,按照日志模型,清洗日志数据,获取每个用户的新邮件事件,插入到缓存队列
中,待下一步进行邮件同步,其中此处的缓存队列可以只是oracle数据库中的邮件推送表。
将收件人、发件人、主题、邮件时间等邮件基本信息存入数据库中,将邮件正文、附件等占用
容量较大的信息存入文件系统中,实现邮件内容的分段存储,以备后续的手机APP邮件同步
使用。邮件缓存模块由一个管理进程和若干个执行进程组成,支持分灵活扩展布式部署 ,
可应对大用户量高并发的应用场景。缓存数据库支持目前主流的关系数据库和内存数据
库,支持数据迁移和扩容,这样应用了邮件的预收取和分段存储技术,解决了大邮件、复杂
格式邮件收取慢,大邮箱同步超时等实际的应用场景。
每封邮件的正文和附件进行处理,所有邮件中相同正文和附件的内容,在缓存文件系统中
仅存放一份,所有这些具有相同正文和附件的邮件,都链接到同一个缓存文件,以实现邮件
内容和附件的去重处理,大大节省服务器存储资源。
的邮件内容时,再实时从邮箱中获取。通过该技术,根据用户的实际应用场景平衡取舍,既
满足了用户的实际应用需求,也解决了大邮件解析慢、占用流量大等系统性能问题。
件的基本信息。用户再APP打开邮件基本信息即可预览邮件的主要内容。其次,当用户需要
查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地址指向的内容以文件
的形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器以静态资源的方式直
接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。这样大大减少了邮件基础
信息的大小,使得用户的请求能快速响应,而邮件正文、附件的访问量相对邮件列表的请求
少得很多,减少了不必要的数据通信,且静态资源可以根据实际需要,可进一步缓存在网络
设备中,实现相同资源的一次调用多次访问,整体提高系统的运行效率和响应时间。
迹画像,及时发现安全风险,实现用户动作的全程跟踪,解决用户异常登录、账号泄露、用户
故障处理等用户行为跟踪的难题。
对新增邮件进行缓存时,则获取到新邮件事件,然后根据新邮件事件中的邮件标识以及用
户的登录口令登录至邮箱服务器,从而下载增量邮件。这样提前将邮件进行收取,从而后续
不需要再次收取,提高效率。
包括附件以及在邮件基本数据太大时的邮件正文等。邮件缓存层在获取到增量邮件后,则
首先将邮件基本数据进行拆分出来,然后判断邮件正文是否大于预设大小,若是,则邮件头
和邮件正文拆分出来作为文件数据。然后继续判断是否存在附件,若是,则将附件也提取出
来作为文件数据。
件的文件数据时,将文件数据发送至终端。
服务端从数据库中提取邮件列表及邮件正文、附件的链接地址返回给用户,以实现快速响
应,用户收取到每封邮件的基本信息。用户在APP打开邮件基本信息即可预览邮件的主要内
容。其次,当用户需要查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地
址指向的内容以文件的形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器
以静态资源的方式直接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。本实
施例中,大大减少了邮件基本数据的大小,使得用户的请求能快速响应,而邮件正文、附件
的访问量相对邮件列表的请求少得很多,减少了不必要的数据通信,且静态资源可以根据
实际需要,可进一步缓存在网络设备中,实现相同资源的一次调用多次访问,整体提高系统
的运行效率和响应时间。
现了邮件内容的分段存储,这样后续终端获取邮件的时候,可以首先同步邮件基本数据,在
需要同步文件数据的时候,再进行同步,也就是说对于大的正文或附件等无需立刻显示,仅
在需要的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮
件出现超时的情况,保证了邮件的正常收取。
增量邮件事件获取到增量邮件。
下来,并进行邮件内容的处理,按序存放在数据库,即第一数据库和文件系统,即文件数据
库中,按需要的格式提前将邮件数据准备好,以备收集APP端同步调用。
的事件,事件格式如下:[09653:00021‑700430080] 2019‑12‑15 15:06:30 Router:
Message 00270C08, 00270BD7 delivered to smailvip02/fsc/CNTAIPING,这样根据该事
件得到新邮件达到日志。
06:30”、邮件ID、文件夹“Message 00270C08”、发件人等信息,然后按照预设的标准格式将
增量邮件事件存储至缓存队列中,也即写入oracle数据库的事件表中,以被缓存层的任务
调用。其中可选地,邮件缓存层可以根据该事件表生成邮件推送表,以便于后续邮件推送的
有条不紊地进行。即后续邮件缓存层根据该缓存队列中的邮件关键信息来下载增量邮件。
去重处理;根据文件数据库中已经缓存的文件数据对处理得到的文件数据进行去重处理。
所有邮件中相同正文和附件的内容,在缓存文件系统中仅存放一份,所有这些具有相同正
文和附件的邮件,都链接到同一个缓存文件,以实现邮件内容和附件的去重处理,大大节省
服务器存储资源。
和文件数据库中存储的MD5值进行比较,若是相同,则无需再次缓存,直接获取到第一数据
库和/或文件数据库中的存储地址即可,若是不相同,则缓存。
据以及文件数据,包括:通过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以
得到邮件基本数据以及文件数据。
进行增量邮件的获取和处理,提高了处理的效率。
行线程竞争以确定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个
进程中;通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行
线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
个主线程,该主线程执行对应的业务逻辑,包括进行线程竞争以确定管理线程以及将分配
至对应进程中的增量邮件缓存至对应的处理队列中。执行线程则是读取配置文件然后启动
对应数量的执行线程,每个执行线程则执行对应的业务逻辑,包括对缓存至对应的处理队
列中的增量邮件进行处理,得到邮件基本数据以及文件数据。管理线程则是对多个进程的
主线程进行选择得到的,该管理线程是一个主线程,其主要用于获取增量邮件,并将增量邮
件均衡分配至各个进程中。
获取已经分配给当前进程的用户任务列表,并发同时从Domino中拉取增量的邮件信息。在
拉取邮件后,将邮件头信息写入中间层Oracle数据库,将邮件正文和附件写入NAS存储中。
结合图5,图5为一个实施例中的多进程多线程处理的时序图,在该实施例中,首先主线程更
新数据库中的进程管理表的对应进程的活跃状态,然后通过获取进程管理表中的进程的活
跃状态根据预设规则来确定管理线程,管理线程从数据库中获取进程管理表,以判断是否
是管理线程自己本身执行任务,若是,即管理线程没有发生故障,则获取邮件推送表,并进
行处理后,将增量邮件任务均衡分配至各个进程中,也即更新数据库中对应的进程推送表。
这样主线程可以从数据库中获取到进程推送表,然后按照用户进行分组处理后,放置在进
程对应的处理队列中,从而各个执行线程可以从处理队列中获取到对应的用户,然后登录
用户邮箱,进行数据解析以处理得到邮件基本数据和文件数据后进行分段存储。
程中。
行增量邮件的处理,这样该进程将处理的后的增量邮件可以保存在A地或者是距离A地最近
的第一数据库或文件数据库中,从而当邮件接收者在同步邮件的时候,可以就近获取到处
理后的邮件基本信息和文件数据,这样可以提高同步的效率。
隔查询进程管理表中各个进程的进程状态,并根据预设管理线程选取规则从进程状态为活
跃状态的进程中选取管理线程。
中插入一条记录,表明自己的活跃状态,插入信息包括:主机IP、进程名称或ID、线程ID、活
跃时间。主线程查询最近120秒的活跃进程记录,其中各服务器进程名或ID最小的线程选举
为整个缓存任务集群的管理线程。
取活跃状态的进程的当前任务量,当前任务量通过用户数量表示;通过管理线程获取增量
邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮件推送记录表中的用户标识进
行标准化;根据活跃状态的进程的当前任务量以及标准化后的用户标识,将增量邮件均衡
分配至各个进程中。
时获取这些进程ID邮件推送记录表中已被分配的任务用户数量。管理线程查询邮件推送记
录表,获取用户名为空的用户,根据用户名为关联条件,查询用户信息表,更新缓存拉取用
户邮件时需要用到的用户连接信息,即将用户标识进行标准化。管理线程查询邮件推送记
录表,获取字段任务分配时间字段为空,且同时在该表中不存在段任务分配时间字段不为
空的用户名称记录。同时用户在用户表且在移动办公平台中存在的用户记录。这样邮件缓
存层将获取的用户标识,并根据各服务现有已分配的任务用户数量,平均分配给获取到的
可用的进程中。此外,可选地邮件缓存层按用户名称,即用户标识更新到邮件推送记录表的
任务分配时间和任务进程ID字段。
平均分配获取到的可用的进程ID,将这部分任务重新分配给其他空闲的进程处理。将邮件
推送记录表中已同步时间字段和同步状态字段不为空的记录,移动到邮件推送记录历史表
中。
于:定时清理进程状态表 表的记录,保留最近2小时的记录;定时清理邮件推送记录历史表
的记录,保留最近7天的记录;定时清理邮件日常历史表的记录,保留最近1天的记录;定时
清理邮件列表增量记录表的记录,保留最近180天的记录。
件按照用户名进行去重得到增量任务;将增量任务缓存至对应的处理队列中。
在实际应用中,主线程每30秒进程一次轮询活动;主线程根据配置文件中的参数,启用相应
数量的执行线程,并设计线程管理机制;主线程查询邮件推送记录表,获取自己进程的同步
任务用户,按用户名去重,每个用户名只获取一条记录,将用名户、同步类型、事件时间、同
步文件夹等信息字段拼接后,存入进程中的缓存队列中。
务缓存至对应的处理队列中。
获取用户清单,若是存在缓存权限,则进行缓存,否则,则按照普通邮件的处理方式进行处
理。
中,其中拉取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取
时,则将增量任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
是指用户在手机端手工下拉主动触发的邮件同步事件,是对自动邮件拉取的补偿操作,防
止自动拉取的任务挂死。处理队列由主线程控制,执行线程仅从处理队列获取缓存任务,执
行邮件缓存同步的操作即可。
后主线程在进程处于活跃状态的时候,读取对应的进程的邮件推送表,判断对应邮箱的用
户是否开启了缓存权限,若是否,则按照普通邮件进行处理,即不预先进行邮件的缓存等,
若是开启了缓存权限,则获取到邮件的拉取方式,若是拉取方式为手动拉取时,则将增量任
务缓存之手动队列中,拉取方式为自动拉取时,则将增量任务缓存至自动队列中。此外,主
线程在处理完成对应的进程的邮件推送表中的邮件的处理后,则读取配置文件的睡眠时
间,进行睡眠,例如30秒,并在睡眠结束后,循环上述过程,即读取进程管理表等。
的增量任务;登录增量任务对应的用户的用户邮箱;读取用户邮箱中的增量邮件,并对增量
邮件进行处理,得到邮件基本数据以及文件数据。
列,若是存在同步任务,则读取配置文件中的IMAP信息,读取处理队列中的用户名,然后获
取到用户的认证信息登录用户邮箱,以获取到对应的待同步文件夹,若是存在待同步文件
夹,则处理该待同步文件夹,否则查询邮件订阅文件夹表中用户的订阅文件夹列表,如果该
表为空,则设置默认文件夹,若是不为空,则处理订阅文件夹。其中对于待同步文件夹的处
理即是对增量邮件进行处理,得到邮件基本数据以及文件数据,具体可以参见下文。
理下一个用户。查询邮件用户信息表,获取用户连接邮件服务的认证信息;以IMAP协议使用
统一域名地址登录用户邮箱,然后读取用户邮箱中的增量邮件,并对增量邮件进行处理,得
到邮件基本数据以及文件数据。
取文件夹的第一预设时间段中的邮件作为当前用户的增量邮件;若是邮件记录不为空,则
按照预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
为空,则设置默认文件夹,也即上述的待同步文件夹。在获取到邮箱文件夹列表后,循环同
步处理文件夹列表中的邮件。若文件夹不存在,则跳过处理下一个文件夹。根据同步任务的
同步方向,从邮件信息主表获取该文件夹中,邮件UID最新或最旧的一条记录,包含UID、时
间、Messageid。根据从邮件信息主表中是否获取到对应的邮件记录存在两种不同的处理方
式,具体地,若是数据库返回数据为空,则读取文件夹的第一预设时间段中的邮件作为当前
用户的增量邮件,以IMAP协议从Domino获取该文件夹中用户最近的3天的邮件记录,写入数
据库中。优先地,先获取100条记录,如果结果未达前三天的邮件,则再次循环该过程。获取
邮件头,获取邮件内容,并将所获取的邮件信息,即邮件头和邮件内容写入到邮件信息主
表;如果是会议邮件,同时将邮件信息写入到邮件日程信息推送表。
得到文件数据;判断增量邮件是否含有附件,若是,则根据附件生成文件数据;提取增量邮
件的基本数据得到邮件基本数据。具体地,首先判断如果邮件头(主题、收件人等)和邮件内
容太大(根据数据表设计的字段长度),则将邮件头和内容分拆出来,以文件形式写入NAS文
件系统中,路径信息写入邮件信息邮件头表和邮件信息邮件内容表中;如果含有附件,则将
附件写入NAS文件系统中,附件信息写入邮件信息邮件附件表;先计算邮件头、邮件正文、邮
件附件的MD5值,以MD5值按天进行去重处理;分拆出来的主题、内容、附件信息按邮件日期
进行存储,路径参考如下:邮件头:……/mailfile/yyyyhhdd/hh/header/hash_key.txt,正
文:……/mailfile/yyyyhhdd/hh/contect/hash_key.txt,附件:……/mailfile/
yyyyhhdd/hh/ attachment/hash_key.txt,MSGID判断邮件附件是否存储过。此外如果邮件
含有嵌入对象,例如图片等,则将嵌入式对象写入邮件正文文件中,由前端进行解析。如果
是会议邮件,则将会议邮件相关的字段信息写入到邮件正文附件中,主要字段包括:主题
SUBJECT、时间DATA、位置LOCATION、正文DESCRIPTION、主持人ORGANIZER和参与人xxx中的
至少一个。最后同时将会议邮件的信息写入到邮件日程信息推送表,用于日程定时同步功
能。
中的邮件作为当前用户的增量邮件,包括:获取邮件同步方向,并获取与邮件同步方向对应
的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮
件。
件,参考保留时间字段的时间,同步相应时间的历史邮件。当数据库中已经存在邮件数据
时,需要与Domino中的邮件进行比较,使两者保持一致。
方法和FetchProfile条件。循环从Domino中获取到的数据,直到找到比Oracle中100条数据
更旧的数据为止,与Oracle中的数据进行比较;如果数据库中存在则继续下一条,如果数据
中不存在,则新增;如果数据库中多余,则更新STATE字段状态。
LASTUIDTIME字段,如果大于(24+‑随机2小时),则进行全量的UID信息同步:查询当前用户
在邮件信息主表中最近一个月邮件的数量和最旧的一条记录时间,写入内存中;根据邮件
数量,用步骤2的方法从Domino获取相应数量的邮件头信息,写入内存中;取数据库和
Domino中的邮件最小的邮件开始时间进行比较,相互比较,同步UID、已读和已删除的邮件
信息。比较方法:用数据库的messageid循环比较Domino中的数据,更新数据库中的数据;如
果邮件删除、已读状态变更、重要性标记变更,则写入到邮件信息增量邮件列表。
行存储;对所存储的事件进行大数据实时分析得到用户轨迹画像,用户轨迹画像用于判断
对应的邮箱是否安全。
用户轨迹画像,及时发现安全风险,实现用户动作的全程跟踪,解决用户异常登录、账号泄
露、用户故障处理等用户行为跟踪的难题。
器进行交互获得邮件,将缓存的缓存层邮件信息,以用户可以理解的语言或者页面显示出
来。首先邮件表现层通过标准的接口规范,从缓存层请求邮件列表,快速给用户呈现邮件列
表内容,首次显示邮件内容时,显示一部分邮件正文的预览内容,当需要查看更多的邮件正
文和附件时,再次以静态资源的方式请求缓存层。其次,表现层同时承担着收集APP的安全
管控功能,常见功能包括用户验证、数据加密、用户留痕、邮件水印、权限管控等功能,手机
APP主要通过以下流程,与服务端缓存层进行邮件交互,在交互过程中,需要确保邮件信息
完整,邮件顺序与邮件到达时间保持一致,邮件以增量的方式进行同步,包括以下步骤:
包括附件以及在邮件基本数据太大时的邮件正文等。邮件缓存层在获取到增量邮件后,则
首先将邮件基本数据进行拆分出来,然后判断邮件正文是否大于预设大小,若是,则邮件头
和邮件正文拆分出来作为文件数据。然后继续判断是否存在附件,若是,则将附件也提出来
作为文件数据。
地,手机提供功能,用户可以选择保留3天、1星期、半个月、1个月、3个月,默认为3天。
从文件数据库读取对应的文件数据,并显示文件数据。
形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器以静态资源的方式直接
返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。本实施例中,大大减少了邮
件基本数据的大小,使得用户的请求能快速响应,而邮件正文、附件的访问量相对邮件列表
的请求少得很多,减少了不必要的数据通信,且静态资源可以根据实际需要,可进一步缓存
在网络设备中,实现相同资源的一次调用多次访问,整体提高系统的运行效率和响应时间。
的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮件出现
超时的情况,保证了邮件的正常收取。
附件链接地址。
以静态资源的方式直接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。
器获取预设数量的服务器端邮件列表;将服务器端邮件列表与本地端邮件列表进行比对,
以获取到差异邮件;从第一数据库同步差异邮件的邮件基本数据。
旧一封邮件的时间;如果用户手机端获取到1天的邮件列表后,进行双向对比, 使手机端和
服务器端的邮件列表、已读标记、已删除邮件状态保持一致;以每封邮件的messageid、邮件
时间比较本地数据库,如果已存在,则处理下一封邮件,如果不存在,则在手机本地数据库
中缓存;根据每封邮件中反馈的链接信息,下载邮件头、邮件内容进行缓存,附件在邮件打
开时再进行下载;如果手机初步化本地列表为空时,则循环往后拉取3天的历史邮件。
手动拉取请求。
需要手机端进行调用频率控制,最多1分钟调用一次,调用时附带用户名、同步类型、邮件保
留时间。用户手工拉取采用异步同步的模式,接口先将同步请求写入同步任务表中,手机端
每隔10秒再请求一次列表。
标记”为否,则继续循环获取邮件列表;每次同步完成后,请求获取“邮件增量修改信息”,附
带最后一次邮件状态同步的请求时间,同步本地的邮件状态等信息。
求,合理的设计移动邮箱的产品功能,满足用户的使用体验。同时,通过技术架构的改造,完
全解决了大邮件、复杂邮件解析耗时的技术难题,降低了网络带宽和手机存储的资源要求,
使得终端用户更加容易接入,间接增加了用户的粘合度,为企业移动办公带来了实际的便
利性,提升了工作效率和价值。其次,在该技术平台上,有空间进一步进行技术改造,从缓存
层海量的邮件大数据中,挖掘有价值的数据,也可为企业业务开展提供有力的数据支撑。
骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3‑图8中的至
少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻
执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进
行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执
行。
于在终端同步邮件的文件数据时,将文件数据发送至终端。
去重处理。
量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据。
程。
务缓存至自动队列中,手动拉取的优先级高于自动拉取。
第二预设时间段中的邮件作为当前用户的增量邮件。
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
址。
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易
失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该
内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备
的数据库用于存储增量邮件数据。该计算机设备的网络接口用于与外部的终端通过网络连
接通信。该计算机程序被处理器执行时以实现一种邮件同步方法。
示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的
存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机
程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计
算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过
WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现
一种邮件显示方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计
算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按
键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件
布置。
处理以得到邮件基本数据以及文件数据,文件数据包括邮件正文和/或附件;将邮件基本数
据存储至第一数据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,
将邮件基本数据发送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据
发送至终端。
事件存储至缓存队列中;根据增量邮件事件获取到增量邮件。
处理得到的邮件基本数据进行去重处理;根据文件数据库中已经缓存的文件数据对处理得
到的文件数据进行去重处理。
实现的获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通
过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文
件数据。
量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过主线程进行线程竞争以确
定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中;通过主线
程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行线程对缓存至对应
的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
量邮件均衡分配至所选取的进程中。
过主线程每隔第一预设时间间隔查询进程管理表中各个进程的进程状态,并根据预设管理
线程选取规则从进程状态为活跃状态的进程中选取管理线程。
状态为活跃状态的进程,以及获取活跃状态的进程的当前任务量,当前任务量通过用户数
量表示;通过管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮
件推送记录表中的用户标识进行标准化;根据活跃状态的进程的当前任务量以及标准化后
的用户标识,将增量邮件均衡分配至各个进程中。
程。
应进程的增量邮件,并对增量邮件按照用户名进行去重得到增量任务;将增量任务缓存至
对应的处理队列中。
支持邮件缓存;若是,则将增量任务缓存至对应的处理队列中。
取增量任务对应的拉取方式;根据拉取方式将增量任务缓存至对应的处理队列中,其中拉
取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取时,则将增量
任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
获取缓存至对应的处理队列中的增量任务;登录增量任务对应的用户的用户邮箱;读取用
户邮箱中的增量邮件,并对增量邮件进行处理,得到邮件基本数据以及文件数据。
件夹对应的邮件记录;若是邮件记录为空,则读取文件夹的第一预设时间段中的邮件作为
当前用户的增量邮件;若是邮件记录不为空,则按照预设逻辑读取文件夹的第二预设时间
段中的邮件作为当前用户的增量邮件。
件同步方向对应的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为当
前用户的增量邮件。
增量邮件的邮件正文拆分出来得到文件数据;判断增量邮件是否含有附件,若是,则根据附
件生成文件数据;提取增量邮件的基本数据得到邮件基本数据。
事件的形式对邮件处理操作进行存储;对所存储的事件进行大数据实时分析得到用户轨迹
画像,用户轨迹画像用于判断对应的邮箱是否安全。
基本数据;当接收到邮件基本数据读取请求时,显示邮件基本数据;判断是否接收到文件数
据读取请求;当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示
文件数据。
列表、邮件正文链接地址和/或附件链接地址。
的方式获取对应的文件数据。
件列表;根据邮件参数从服务器获取预设数量的服务器端邮件列表;将服务器端邮件列表
与本地端邮件列表进行比对,以获取到差异邮件;从第一数据库同步差异邮件的邮件基本
数据。
手动拉取接口向服务器发送手动拉取请求。
基本数据以及文件数据,文件数据包括邮件正文和/或附件;将邮件基本数据存储至第一数
据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据
发送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据发送至终端。
件事件存储至缓存队列中;根据增量邮件事件获取到增量邮件。
对处理得到的邮件基本数据进行去重处理;根据文件数据库中已经缓存的文件数据对处理
得到的文件数据进行去重处理。
所实现的获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:
通过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及
文件数据。
对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过主线程进行线程竞争
以确定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中;通过
主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行线程对缓存至
对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
增量邮件均衡分配至所选取的进程中。
通过主线程每隔第一预设时间间隔查询进程管理表中各个进程的进程状态,并根据预设管
理线程选取规则从进程状态为活跃状态的进程中选取管理线程。
状态为活跃状态的进程,以及获取活跃状态的进程的当前任务量,当前任务量通过用户数
量表示;通过管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮
件推送记录表中的用户标识进行标准化;根据活跃状态的进程的当前任务量以及标准化后
的用户标识,将增量邮件均衡分配至各个进程中。
进程。
对应进程的增量邮件,并对增量邮件按照用户名进行去重得到增量任务;将增量任务缓存
至对应的处理队列中。
否支持邮件缓存;若是,则将增量任务缓存至对应的处理队列中。
括:获取增量任务对应的拉取方式;根据拉取方式将增量任务缓存至对应的处理队列中,其
中拉取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取时,则将
增量任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
程获取缓存至对应的处理队列中的增量任务;登录增量任务对应的用户的用户邮箱;读取
用户邮箱中的增量邮件,并对增量邮件进行处理,得到邮件基本数据以及文件数据。
件夹对应的邮件记录;若是邮件记录为空,则读取文件夹的第一预设时间段中的邮件作为
当前用户的增量邮件;若是邮件记录不为空,则按照预设逻辑读取文件夹的第二预设时间
段中的邮件作为当前用户的增量邮件。
邮件同步方向对应的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为
当前用户的增量邮件。
将增量邮件的邮件正文拆分出来得到文件数据;判断增量邮件是否含有附件,若是,则根据
附件生成文件数据;提取增量邮件的基本数据得到邮件基本数据。
以事件的形式对邮件处理操作进行存储;对所存储的事件进行大数据实时分析得到用户轨
迹画像,用户轨迹画像用于判断对应的邮箱是否安全。
到邮件基本数据读取请求时,显示邮件基本数据;判断是否接收到文件数据读取请求;当接
收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示文件数据。
件列表、邮件正文链接地址和/或附件链接地址。
源的方式获取对应的文件数据。
邮件列表;根据邮件参数从服务器获取预设数量的服务器端邮件列表;将服务器端邮件列
表与本地端邮件列表进行比对,以获取到差异邮件;从第一数据库同步差异邮件的邮件基
本数据。
用手动拉取接口向服务器发送手动拉取请求。
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑
Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器
(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种
形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存
储器(Dynamic Random Access Memory,DRAM)等。
盾,都应当认为是本说明书记载的范围。
说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护
范围。因此,本申请专利的保护范围应以所附权利要求为准。