邮件同步方法、装置、计算机设备和存储介质转让专利

申请号 : CN202110775227.3

文献号 : CN113242174B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋宁涛钟超文

申请人 : 太平金融科技服务(上海)有限公司深圳分公司

摘要 :

本申请涉及一种邮件同步方法、装置、计算机设备和存储介质。所述方法包括:获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据,所述文件数据包括邮件正文和/或附件;将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库,所述第一数据库用于在终端同步邮件时,将所述邮件基本数据发送至终端,所述文件数据库用于在所述终端同步邮件的文件数据时,将所述文件数据发送至终端。采用本方法能够保证邮件正常收取。

权利要求 :

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中任一项所述的方法的步骤。

说明书 :

邮件同步方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及大数据技术领域,特别是涉及一种邮件同步方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着移动办公技术的发展,大量用户通过移动邮箱收发邮件。
[0003] 传统技术中的移动邮箱都采用移动端从服务器端直接拉取邮件方案,虽然具有开发难度低,开发成本低廉的优点。但存在一个严重的问题:当邮件内容包括大附件或邮件内
容本身比较大时,移动端需要耗费比较长的时间去解析邮件内容,由于邮件一般都设置了
超时机制,如果网络状况不佳,这会造成大邮件不能被正常收取,即邮件收取失败。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种能够保证邮件正常收取的邮件同步方法、装置、计算机设备和存储介质。
[0005] 一种邮件同步方法,所述方法包括:
[0006] 获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据,所述文件数据包括邮件正文和/或附件;
[0007] 将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库,所述第一数据库用于在终端同步邮件时,将所述邮件基本数据发送至终端,所述文件数据库
用于在所述终端同步邮件的文件数据时,将所述文件数据发送至终端。
[0008] 在其中一个实施例中,所述获取增量邮件,包括:
[0009] 当存在新邮件到达时,则生成新邮件到达日志;
[0010] 对所述日志进行清洗获得增量邮件事件,并将增量邮件事件存储至缓存队列中;
[0011] 根据所述增量邮件事件获取到增量邮件。
[0012] 在其中一个实施例中,所述对所述增量邮件进行处理以得到邮件基本数据以及文件数据之后,还包括:
[0013] 根据第一数据库中已经缓存的邮件基本数据对处理得到的邮件基本数据进行去重处理;
[0014] 根据所述文件数据库中已经缓存的文件数据对处理得到的文件数据进行去重处理。
[0015] 在其中一个实施例中,每台用于对所述增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;所述获取增量邮件,并对所述增量邮件进行处理以得到
邮件基本数据以及文件数据,包括:
[0016] 通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据。
[0017] 在其中一个实施例中,所述多个线程中包括执行线程和主线程;所述通过多进程多线程的方式获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数
据,包括:
[0018] 通过所述主线程进行线程竞争以确定管理线程;
[0019] 通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中;
[0020] 通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;
[0021] 通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
[0022] 在其中一个实施例中,所述将所述增量邮件均衡分配至各个进程中,包括:
[0023] 获取所述增量邮件对应的接收地理位置;
[0024] 选取与所述接收地理位置对应的进程;
[0025] 将所述增量邮件均衡分配至所选取的进程中。
[0026] 在其中一个实施例中,所述通过所述主线程进行线程竞争以确定管理线程,包括:
[0027] 通过所述主线程周期性地在进程管理表中记录对应的进程的进程状态;
[0028] 通过所述主线程每隔第一预设时间间隔查询所述进程管理表中各个进程的进程状态,并根据预设管理线程选取规则从所述进程状态为活跃状态的进程中选取管理线程。
[0029] 在其中一个实施例中,所述通过所述管理线程获取增量邮件,并将所述增量邮件均衡分配至各个进程中,包括:
[0030] 通过所述管理线程查询进程管理表以获取进程状态为活跃状态的进程,以及获取所述活跃状态的进程的当前任务量,所述当前任务量通过用户数量表示;
[0031] 通过所述管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对所述邮件推送记录表中的用户标识进行标准化;
[0032] 根据所述活跃状态的进程的当前任务量以及标准化后的用户标识,将所述增量邮件均衡分配至各个进程中。
[0033] 在其中一个实施例中,所述方法还包括:
[0034] 通过所述管理线程查询所述邮件推送记录表以获取超时任务;
[0035] 通过所述管理线程将所述超时任务重新均衡分配至其他的活跃进程。
[0036] 在其中一个实施例中,所述方法还包括:
[0037] 通过所述管理线程定期清理所述邮件推送记录表以及进程管理表。
[0038] 在其中一个实施例中,所述通过所述主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中,包括:
[0039] 通过所述主线程每隔第二预设时间段获取对应进程的增量邮件,并对所述增量邮件按照用户名进行去重得到增量任务;
[0040] 将所述增量任务缓存至对应的处理队列中。
[0041] 在其中一个实施例中,所述将所述增量任务缓存至对应的处理队列中,包括:
[0042] 获取分配至对应进程中的增量邮件的用户的管理权限;
[0043] 判断所述管理权限是否支持邮件缓存;
[0044] 若是,则将所述增量任务缓存至对应的处理队列中。
[0045] 在其中一个实施例中,所述处理队列包括自动队列和手动队列;所述将所述增量任务缓存至对应的处理队列中,包括:
[0046] 获取所述增量任务对应的拉取方式;
[0047] 根据所述拉取方式将所述增量任务缓存至对应的处理队列中,其中所述拉取方式为手动拉取时,则将所述增量任务缓存之所述手动队列中,所述拉取方式为自动拉取时,则
将所述增量任务缓存至所述自动队列中,所述手动拉取的优先级高于所述自动拉取。
[0048] 在其中一个实施例中,所述通过所述执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据,包括:
[0049] 通过所述执行线程获取缓存至对应的处理队列中的增量任务;
[0050] 登录所述增量任务对应的用户的用户邮箱;
[0051] 读取所述用户邮箱中的增量邮件,并对所述增量邮件进行处理,得到邮件基本数据以及文件数据。
[0052] 在其中一个实施例中,所述读取所述用户邮箱中的增量邮件,包括:
[0053] 获取所述用户邮箱对应的待同步文件夹;
[0054] 根据所述增量任务的同步方向,读取与所述待同步文件夹对应的邮件记录;
[0055] 若是所述邮件记录为空,则读取所述文件夹的第一预设时间段中的邮件作为当前用户的增量邮件;
[0056] 若是所述邮件记录不为空,则按照预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
[0057] 在其中一个实施例中,所述按照预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件,包括:
[0058] 获取邮件同步方向,并获取与所述邮件同步方向对应的预设逻辑;
[0059] 根据所述预设逻辑读取所述文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
[0060] 在其中一个实施例中,所述对所述增量邮件进行处理,得到邮件基本数据以及文件数据,包括:
[0061] 判断所述增量邮件的数据量是否大于预设数据量,若是则将所述增量邮件的邮件正文拆分出来得到文件数据;
[0062] 判断所述增量邮件是否含有附件,若是,则根据所述附件生成文件数据;
[0063] 提取所述增量邮件的基本数据得到邮件基本数据。
[0064] 在其中一个实施例中,所述将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库之后,还包括:
[0065] 接收终端发送的邮件处理操作,并以事件的形式对所述邮件处理操作进行存储;
[0066] 对所存储的事件进行大数据实时分析得到用户轨迹画像,所述用户轨迹画像用于判断对应的邮箱是否安全。
[0067] 一种邮件显示方法,所述方法包括:
[0068] 周期性地从第一数据库同步邮件基本数据;
[0069] 当接收到邮件基本数据读取请求时,显示所述邮件基本数据;
[0070] 判断是否接收到文件数据读取请求;
[0071] 当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示所述文件数据。
[0072] 在其中一个实施例中,所述周期性地从第一数据库同步邮件基本数据,包括:
[0073] 周期性地从所述第一数据库提取的邮件基本数据,所述邮件基本数据包括邮件列表、邮件正文链接地址和/或附件链接地址。
[0074] 在其中一个实施例中,所述从文件数据库读取对应的文件数据,包括:
[0075] 根据所述邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资源的方式获取对应的文件数据。
[0076] 在其中一个实施例中,所述周期性地从第一数据库同步邮件基本数据,包括:
[0077] 获取本地的预设类型的邮件的邮件参数,并根据所述邮件参数获取本地邮件列表;
[0078] 根据所述邮件参数从服务器获取预设数量的服务器端邮件列表;
[0079] 将所述服务器端邮件列表与本地端邮件列表进行比对,以获取到差异邮件;
[0080] 从第一数据库同步所述差异邮件的邮件基本数据。
[0081] 在其中一个实施例中,所述将所述服务器端邮件列表与本地端邮件列表进行比对之后,还包括:
[0082] 当所述服务器端邮件列表与本地端邮件列表相同时,则调用手动拉取接口向服务器发送手动拉取请求。
[0083] 一种邮件同步装置,所述装置包括:
[0084] 拆分模块,用于获取增量邮件,并对所述增量邮件进行处理以得到邮件基本数据以及文件数据,所述文件数据包括邮件正文和/或附件;
[0085] 分段存储模块,用于将所述邮件基本数据存储至第一数据库,将所述文件数据存储至文件数据库,所述第一数据库用于在终端同步邮件时,将所述邮件基本数据发送至终
端,所述文件数据库用于在所述终端同步邮件的文件数据时,将所述文件数据发送至终端。
[0086] 一种邮件显示装置,所述装置包括:
[0087] 基本数据同步模块,用于周期性地从第一数据库同步邮件基本数据;
[0088] 显示模块,用于当接收到邮件基本数据读取请求时,显示所述邮件基本数据;
[0089] 判断模块,用于判断是否接收到文件数据读取请求;
[0090] 文件数据同步模块,用于当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示所述文件数据。
[0091] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的方法的步骤。
[0092] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法的步骤。
[0093] 上述邮件同步方法、装置、计算机设备和存储介质,在获取到增量邮件之后,对增量邮件进行拆分得到邮件基本数据和文件数据,这样将邮件基本数据存储至第一数据库,
文件数据存储至文件数据库,实现了邮件内容的分段存储,这样后续终端获取邮件的时候,
可以首先同步邮件基本数据,在需要同步文件数据的时候,再进行同步,也就是说对于大的
正文或附件等无需立刻显示,仅在需要的时候进行显示,从而减少一开始同步的数据量,避
免了由于耗时过长所导致的邮件出现超时的情况,保证了邮件的正常收取。

附图说明

[0094] 图1为一个实施例中邮件同步方法的应用环境图;
[0095] 图2为一个实施例中邮件同步方法的框架示意图;
[0096] 图3为一个实施例中邮件同步方法的流程示意图;
[0097] 图4为一个实施例中的邮件缓存层的多进程多线程的示意图;
[0098] 图5为一个实施例中的多进程多线程处理的时序图;
[0099] 图6为一个实施例中的主线程的业务处理流程图;
[0100] 图7为一个实施例中的执行线程的业务处理流程图;
[0101] 图8为一个实施例中邮件显示方法的流程示意图;
[0102] 图9为一个实施例中邮件同步装置的结构框图;
[0103] 图10为一个实施例中邮件显示装置的结构框图;
[0104] 图11为一个实施例中计算机设备的内部结构图;
[0105] 图12为一个实施例中计算机设备的内部结构图。

具体实施方式

[0106] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不
用于限定本申请。
[0107] 本申请提供的邮件同步方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信,其中终端102可以向服务器104发送邮件或者是从服务器
104同步邮件,服务器104在获取到增量邮件后,对增量邮件进行处理以得到邮件基本数据
以及文件数据,文件数据包括邮件正文和/或附件,这样将邮件基本数据存储至第一数据
库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据发
送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据发送至终端102,实
现了邮件内容的分段存储,这样后续终端获取邮件的时候,可以首先同步邮件基本数据,在
需要同步文件数据的时候,再进行同步,也就是说对于大的正文或附件等无需立刻显示,仅
在需要的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮
件出现超时的情况,保证了邮件的正常收取。其中,终端102可以但不限于是各种个人计算
机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器
或者是多个服务器组成的服务器集群来实现。
[0108] 请继续结合图2所示,本申请的邮件同步方法在功能上分为三层结构,包括邮件服务层、邮件缓存层以及邮件表现层,其中邮件缓存层为邮件同步层,邮件表现层包括APP前
端层、xweb平台层、邮件代理层以及邮件接口层。
[0109] 具体地,邮件服务层由标准的邮件平台产品构成,提供邮件收发服务器的标准功能。
[0110] 邮件缓存层是本申请的重点,其启用邮件日志功能,通过日程同步和Splunk在当用户邮箱有新邮件到达时,及时在日志文件记录一条日志信息。通过大数据平台的实时日
志分析功能,按照日志模型,清洗日志数据,获取每个用户的新邮件事件,插入到缓存队列
中,待下一步进行邮件同步,其中此处的缓存队列可以只是oracle数据库中的邮件推送表。
[0111] 邮件缓存层实时监测缓存队列,当有新的邮件事件进入缓存队列中时,立即启动邮件缓存动作。邮件缓存模块及时从邮件系统中提取邮件信息,对邮件信息进行分拆处理,
将收件人、发件人、主题、邮件时间等邮件基本信息存入数据库中,将邮件正文、附件等占用
容量较大的信息存入文件系统中,实现邮件内容的分段存储,以备后续的手机APP邮件同步
使用。邮件缓存模块由一个管理进程和若干个执行进程组成,支持分灵活扩展布式部署 ,
可应对大用户量高并发的应用场景。缓存数据库支持目前主流的关系数据库和内存数据
库,支持数据迁移和扩容,这样应用了邮件的预收取和分段存储技术,解决了大邮件、复杂
格式邮件收取慢,大邮箱同步超时等实际的应用场景。
[0112] 此外,邮件缓存层还引入了去重处理,即在邮件的日常应用中,往往存在邮件转发、群发、回复等场景,这些场景下发出的邮件内容和附件可能完全相同。邮件缓存模块对
每封邮件的正文和附件进行处理,所有邮件中相同正文和附件的内容,在缓存文件系统中
仅存放一份,所有这些具有相同正文和附件的邮件,都链接到同一个缓存文件,以实现邮件
内容和附件的去重处理,大大节省服务器存储资源。
[0113] 在邮件分段存储后,邮件表现层可以读取对应的邮件,其中邮件缓存模块采用了邮件分段加载的技术,仅缓存用户最关心的邮件最前端的部分内容,当用户需要查看更多
的邮件内容时,再实时从邮箱中获取。通过该技术,根据用户的实际应用场景平衡取舍,既
满足了用户的实际应用需求,也解决了大邮件解析慢、占用流量大等系统性能问题。
[0114] 此外,在邮件表现层,当手机APP发出邮件收取请求时,首先服务端从数据库中提取邮件列表及邮件正文、附件的链接地址返回给用户,以实现快速响应,用户收取到每封邮
件的基本信息。用户再APP打开邮件基本信息即可预览邮件的主要内容。其次,当用户需要
查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地址指向的内容以文件
的形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器以静态资源的方式直
接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。这样大大减少了邮件基础
信息的大小,使得用户的请求能快速响应,而邮件正文、附件的访问量相对邮件列表的请求
少得很多,减少了不必要的数据通信,且静态资源可以根据实际需要,可进一步缓存在网络
设备中,实现相同资源的一次调用多次访问,整体提高系统的运行效率和响应时间。
[0115] 可选地,本申请还引入移动操作留痕技术,用户的每一步操作动作,以事件的形式进行记录、清洗和压缩,将事件日志收集到大数据平台,通过大数据实时分析,形成用户轨
迹画像,及时发现安全风险,实现用户动作的全程跟踪,解决用户异常登录、账号泄露、用户
故障处理等用户行为跟踪的难题。
[0116] 在一个实施例中,如图3所示,提供了一种邮件同步方法,以该方法应用于图1中的服务器,也即图2中的邮件缓存层为例进行说明,包括以下步骤:
[0117] S302:获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,文件数据包括邮件正文和/或附件。
[0118] 具体地,增量邮件是邮件缓存层根据邮件服务层所接收的邮件下载下来的,其中邮件服务层可以根据邮件的到达生成新邮件事件,然后进行缓存,从而邮件缓存层在需要
对新增邮件进行缓存时,则获取到新邮件事件,然后根据新邮件事件中的邮件标识以及用
户的登录口令登录至邮箱服务器,从而下载增量邮件。这样提前将邮件进行收取,从而后续
不需要再次收取,提高效率。
[0119] 邮件基本数据包括邮件头和邮件内容,邮件头即主题、收件人等,邮件内容即邮件正文等,若是邮件基本数据太大,则将邮件头和邮件正文拆分出来作为文件数据,文件数据
包括附件以及在邮件基本数据太大时的邮件正文等。邮件缓存层在获取到增量邮件后,则
首先将邮件基本数据进行拆分出来,然后判断邮件正文是否大于预设大小,若是,则邮件头
和邮件正文拆分出来作为文件数据。然后继续判断是否存在附件,若是,则将附件也提取出
来作为文件数据。
[0120] S304:将邮件基本数据存储至第一数据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据发送至终端,文件数据库用于在终端同步邮
件的文件数据时,将文件数据发送至终端。
[0121] 具体地,结合图2,第一数据库为oracle数据库,文件数据库为NAS数据库,邮件缓存层将邮件基本数据和文件数据进行分开存储,这样当手机APP发出邮件收取请求时,首先
服务端从数据库中提取邮件列表及邮件正文、附件的链接地址返回给用户,以实现快速响
应,用户收取到每封邮件的基本信息。用户在APP打开邮件基本信息即可预览邮件的主要内
容。其次,当用户需要查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地
址指向的内容以文件的形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器
以静态资源的方式直接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。本实
施例中,大大减少了邮件基本数据的大小,使得用户的请求能快速响应,而邮件正文、附件
的访问量相对邮件列表的请求少得很多,减少了不必要的数据通信,且静态资源可以根据
实际需要,可进一步缓存在网络设备中,实现相同资源的一次调用多次访问,整体提高系统
的运行效率和响应时间。
[0122] 上述邮件同步方法,在获取到增量邮件之后,对增量邮件进行拆分得到邮件基本数据和文件数据,这样将邮件基本数据存储至第一数据库,文件数据存储至文件数据库,实
现了邮件内容的分段存储,这样后续终端获取邮件的时候,可以首先同步邮件基本数据,在
需要同步文件数据的时候,再进行同步,也就是说对于大的正文或附件等无需立刻显示,仅
在需要的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮
件出现超时的情况,保证了邮件的正常收取。
[0123] 在其中一个实施例中,获取增量邮件,包括:当存在新邮件到达时,则生成新邮件到达日志;对日志进行清洗获得增量邮件事件,并将增量邮件事件存储至缓存队列中;根据
增量邮件事件获取到增量邮件。
[0124] 具体地,首先邮件服务层提供邮件收发服务,邮件缓存层为大数据邮件缓存平台,通过实时分析邮件服务层的事件行为,实时将所有用户的增量邮件从邮件服务中提前收取
下来,并进行邮件内容的处理,按序存放在数据库,即第一数据库和文件系统,即文件数据
库中,按需要的格式提前将邮件数据准备好,以备收集APP端同步调用。
[0125] 其中,增量邮件的获取方式,具体可以结合图2,其中邮件服务层采用的是Domino产品,这样邮件缓存层采用Domino产品自带的邮件到达前事件代理功能,捕获用户新邮件
的事件,事件格式如下:[09653:00021‑700430080] 2019‑12‑15 15:06:30 Router: 
Message 00270C08, 00270BD7 delivered to smailvip02/fsc/CNTAIPING,这样根据该事
件得到新邮件达到日志。
[0126] 从而邮件缓存层通过事件分析,也就是对日志进行清洗得到增量邮件事件,即抽取事件的关键信息,如户名“smailvip02/fsc/CNTAIPING”、邮件到达时间“2019‑12‑15 15:
06:30”、邮件ID、文件夹“Message 00270C08”、发件人等信息,然后按照预设的标准格式将
增量邮件事件存储至缓存队列中,也即写入oracle数据库的事件表中,以被缓存层的任务
调用。其中可选地,邮件缓存层可以根据该事件表生成邮件推送表,以便于后续邮件推送的
有条不紊地进行。即后续邮件缓存层根据该缓存队列中的邮件关键信息来下载增量邮件。
[0127] 上述实施例中,先将邮件的关键信息进行收取,并建立对应的任务,从而后续可以根据该些任务来下载对应的增量邮件。
[0128] 在其中一个实施例中,对增量邮件进行处理以得到邮件基本数据以及文件数据之后,还包括:根据第一数据库中已经缓存的邮件基本数据对处理得到的邮件基本数据进行
去重处理;根据文件数据库中已经缓存的文件数据对处理得到的文件数据进行去重处理。
[0129] 具体地,在邮件的日常应用中,往往存在邮件转发、群发、回复等场景,这些场景下发出的邮件内容和附件可能完全相同。邮件缓存模块对每封邮件的正文和附件进行处理,
所有邮件中相同正文和附件的内容,在缓存文件系统中仅存放一份,所有这些具有相同正
文和附件的邮件,都链接到同一个缓存文件,以实现邮件内容和附件的去重处理,大大节省
服务器存储资源。
[0130] 具体地,在实际应用中,在每次对邮件进行处理得到邮件基本数据以及文件数据之后,均对当前所得到的邮件基本数据以及文件数据进行MD5值的计算,然后与第一数据库
和文件数据库中存储的MD5值进行比较,若是相同,则无需再次缓存,直接获取到第一数据
库和/或文件数据库中的存储地址即可,若是不相同,则缓存。
[0131] 上述实施例中,实现了邮件内容和附件的去重处理,大大节省服务器存储资源,具体的去重的应用还可以结合下文中具体的例子进行理解。
[0132] 在其中一个实施例中,每台用于对增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;获取增量邮件,并对增量邮件进行处理以得到邮件基本数
据以及文件数据,包括:通过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以
得到邮件基本数据以及文件数据。
[0133] 具体地,对增量邮件进行处理的邮件缓存层可由多台服务器组成,每台服务器上可运行多个进程实例,每个进程实例上将包含多个线程。这样通过多进程多线程的方式来
进行增量邮件的获取和处理,提高了处理的效率。
[0134] 其中,可选地,多个线程中包括执行线程和主线程;通过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过主线程进
行线程竞争以确定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个
进程中;通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行
线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
[0135] 具体地,参见图4,图4为一个实施例中的邮件缓存层的多进程多线程的示意图,其中邮件缓存层在项目启动后,每个进程执行三个方法,包括主线程方法,即每个进程启动一
个主线程,该主线程执行对应的业务逻辑,包括进行线程竞争以确定管理线程以及将分配
至对应进程中的增量邮件缓存至对应的处理队列中。执行线程则是读取配置文件然后启动
对应数量的执行线程,每个执行线程则执行对应的业务逻辑,包括对缓存至对应的处理队
列中的增量邮件进行处理,得到邮件基本数据以及文件数据。管理线程则是对多个进程的
主线程进行选择得到的,该管理线程是一个主线程,其主要用于获取增量邮件,并将增量邮
件均衡分配至各个进程中。
[0136] 具体地,采用IMAP标准邮件协议,使用JavaMail公用的java方法,同时多台服务器启动多个进程,每个进程根据服务器资源,配置启动多个线程,首先从邮件推送记录表中,
获取已经分配给当前进程的用户任务列表,并发同时从Domino中拉取增量的邮件信息。在
拉取邮件后,将邮件头信息写入中间层Oracle数据库,将邮件正文和附件写入NAS存储中。
结合图5,图5为一个实施例中的多进程多线程处理的时序图,在该实施例中,首先主线程更
新数据库中的进程管理表的对应进程的活跃状态,然后通过获取进程管理表中的进程的活
跃状态根据预设规则来确定管理线程,管理线程从数据库中获取进程管理表,以判断是否
是管理线程自己本身执行任务,若是,即管理线程没有发生故障,则获取邮件推送表,并进
行处理后,将增量邮件任务均衡分配至各个进程中,也即更新数据库中对应的进程推送表。
这样主线程可以从数据库中获取到进程推送表,然后按照用户进行分组处理后,放置在进
程对应的处理队列中,从而各个执行线程可以从处理队列中获取到对应的用户,然后登录
用户邮箱,进行数据解析以处理得到邮件基本数据和文件数据后进行分段存储。
[0137] 上述实施例中,通过多进程多线程的方式来进行邮件处理,保证了处理的效率。
[0138] 在其中一个实施例中,将增量邮件均衡分配至各个进程中,包括:获取增量邮件对应的接收地理位置;选取与接收地理位置对应的进程;将增量邮件均衡分配至所选取的进
程中。
[0139] 具体地,在该实施例中,主要是为了强调地理位置的作用,即对增量邮件处理的进程是与地理位置相关的,例如邮件接收者在A地,则优先获取到与A地距离最近的进程来进
行增量邮件的处理,这样该进程将处理的后的增量邮件可以保存在A地或者是距离A地最近
的第一数据库或文件数据库中,从而当邮件接收者在同步邮件的时候,可以就近获取到处
理后的邮件基本信息和文件数据,这样可以提高同步的效率。
[0140] 在其中一个实施例中,通过主线程进行线程竞争以确定管理线程,包括:通过主线程周期性地在进程管理表中记录对应的进程的进程状态;通过主线程每隔第一预设时间间
隔查询进程管理表中各个进程的进程状态,并根据预设管理线程选取规则从进程状态为活
跃状态的进程中选取管理线程。
[0141] 具体地,本实施例中主要是说明主线程的第一个功能,即竞选管理线程,其中每个进程实例启动一个主线程,主线程每30秒进程一次轮询活动;主线程每分钟在进程管理表
中插入一条记录,表明自己的活跃状态,插入信息包括:主机IP、进程名称或ID、线程ID、活
跃时间。主线程查询最近120秒的活跃进程记录,其中各服务器进程名或ID最小的线程选举
为整个缓存任务集群的管理线程。
[0142] 在其中一个实施例中,通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中,包括:通过管理线程查询进程管理表以获取进程状态为活跃状态的进程,以及获
取活跃状态的进程的当前任务量,当前任务量通过用户数量表示;通过管理线程获取增量
邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮件推送记录表中的用户标识进
行标准化;根据活跃状态的进程的当前任务量以及标准化后的用户标识,将增量邮件均衡
分配至各个进程中。
[0143] 具体地,在选取得到管理线程,或者是管理线程经过查询当前周期内仍由该管理线程进行工作时,管理线程查询进程状态表,获取最近10分钟内可用的各服务器进程ID;同
时获取这些进程ID邮件推送记录表中已被分配的任务用户数量。管理线程查询邮件推送记
录表,获取用户名为空的用户,根据用户名为关联条件,查询用户信息表,更新缓存拉取用
户邮件时需要用到的用户连接信息,即将用户标识进行标准化。管理线程查询邮件推送记
录表,获取字段任务分配时间字段为空,且同时在该表中不存在段任务分配时间字段不为
空的用户名称记录。同时用户在用户表且在移动办公平台中存在的用户记录。这样邮件缓
存层将获取的用户标识,并根据各服务现有已分配的任务用户数量,平均分配给获取到的
可用的进程中。此外,可选地邮件缓存层按用户名称,即用户标识更新到邮件推送记录表的
任务分配时间和任务进程ID字段。
[0144] 在其中一个实施例中,方法还包括:通过管理线程查询邮件推送记录表以获取超时任务;通过管理线程将超时任务重新均衡分配至其他的活跃进程。
[0145] 具体地,管理线程查询邮件推送记录表,获取最近10分钟还未被处理的任务,即任务分配时间为条件查询10分钟以前的用户清单。这样将所获取的超时任务对应的用户ID,
平均分配获取到的可用的进程ID,将这部分任务重新分配给其他空闲的进程处理。将邮件
推送记录表中已同步时间字段和同步状态字段不为空的记录,移动到邮件推送记录历史表
中。
[0146] 在其中一个实施例中,上述方法还包括:通过管理线程定期清理邮件推送记录表以及进程管理表。
[0147] 具体地,管理线程将邮件推送记录表中任务时间大于1天前的记录,移动到邮件推送记录历史表中。管理线程在预设时间,例如每天晚上2点进行历史数据清理,包括但不限
于:定时清理进程状态表 表的记录,保留最近2小时的记录;定时清理邮件推送记录历史表
的记录,保留最近7天的记录;定时清理邮件日常历史表的记录,保留最近1天的记录;定时
清理邮件列表增量记录表的记录,保留最近180天的记录。
[0148] 上述实施例中,定期对数据进行清理,保证了缓存的正常使用。
[0149] 在其中一个实施例中,通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中,包括:通过主线程每隔第二预设时间段获取对应进程的增量邮件,并对增量邮
件按照用户名进行去重得到增量任务;将增量任务缓存至对应的处理队列中。
[0150] 具体地,结合图6所示,图6为一个实施例中的主线程的业务处理流程图,其中主线程除了承担竟选管理线程的管理任务后,还需承担自己进程中邮件同步的管理分发任务;
在实际应用中,主线程每30秒进程一次轮询活动;主线程根据配置文件中的参数,启用相应
数量的执行线程,并设计线程管理机制;主线程查询邮件推送记录表,获取自己进程的同步
任务用户,按用户名去重,每个用户名只获取一条记录,将用名户、同步类型、事件时间、同
步文件夹等信息字段拼接后,存入进程中的缓存队列中。
[0151] 可选地,在对增量邮件进行缓存的时候还可以引入权限机制,即获取分配至对应进程中的增量邮件的用户的管理权限;判断管理权限是否支持邮件缓存;若是,则将增量任
务缓存至对应的处理队列中。
[0152] 具体地,在IMS用户组织机构管理系统中,增加机构IMAP缓存的权限控制功能;在通过主线程每隔第二预设时间段获取对应进程的增量邮件之前,根据机构的IMAP缓存权限
获取用户清单,若是存在缓存权限,则进行缓存,否则,则按照普通邮件的处理方式进行处
理。
[0153] 可选地,处理队列包括自动队列和手动队列;将增量任务缓存至对应的处理队列中,包括:获取增量任务对应的拉取方式;根据拉取方式将增量任务缓存至对应的处理队列
中,其中拉取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取
时,则将增量任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
[0154] 每个主线程设计2个处理队列,一个用于存放自动推送的邮件拉取任务,一个用于存放手工拉取邮件的任务;执行邮件拉取任务时,手工拉取的优先级高于自动拉取;收工拉
是指用户在手机端手工下拉主动触发的邮件同步事件,是对自动邮件拉取的补偿操作,防
止自动拉取的任务挂死。处理队列由主线程控制,执行线程仅从处理队列获取缓存任务,执
行邮件缓存同步的操作即可。
[0155] 具体地,结合图6,主线程首先读取进程管理表,判断进程管理表中是否存在对应的进程的状态数据,若是无,则主动存入状态数据,若是有,则更新状态数据的活跃时间。然
后主线程在进程处于活跃状态的时候,读取对应的进程的邮件推送表,判断对应邮箱的用
户是否开启了缓存权限,若是否,则按照普通邮件进行处理,即不预先进行邮件的缓存等,
若是开启了缓存权限,则获取到邮件的拉取方式,若是拉取方式为手动拉取时,则将增量任
务缓存之手动队列中,拉取方式为自动拉取时,则将增量任务缓存至自动队列中。此外,主
线程在处理完成对应的进程的邮件推送表中的邮件的处理后,则读取配置文件的睡眠时
间,进行睡眠,例如30秒,并在睡眠结束后,循环上述过程,即读取进程管理表等。
[0156] 在其中一个实施例中,通过执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据,包括:通过执行线程获取缓存至对应的处理队列中
的增量任务;登录增量任务对应的用户的用户邮箱;读取用户邮箱中的增量邮件,并对增量
邮件进行处理,得到邮件基本数据以及文件数据。
[0157] 具体地,结合图7,图7为一个实施例中的执行线程的业务处理流程图,在该实施例中,执行线程查询进程对应的处理队列,其中手动队列优先,自动队列的优先级低于手动队
列,若是存在同步任务,则读取配置文件中的IMAP信息,读取处理队列中的用户名,然后获
取到用户的认证信息登录用户邮箱,以获取到对应的待同步文件夹,若是存在待同步文件
夹,则处理该待同步文件夹,否则查询邮件订阅文件夹表中用户的订阅文件夹列表,如果该
表为空,则设置默认文件夹,若是不为空,则处理订阅文件夹。其中对于待同步文件夹的处
理即是对增量邮件进行处理,得到邮件基本数据以及文件数据,具体可以参见下文。
[0158] 具体地,本实施例主要说明执行线程的处理逻辑,执行线程获取缓存至对应的处理队列中的增量任务,例如查询邮件推送记录表中,是否存在同步任务,如果不存在,则处
理下一个用户。查询邮件用户信息表,获取用户连接邮件服务的认证信息;以IMAP协议使用
统一域名地址登录用户邮箱,然后读取用户邮箱中的增量邮件,并对增量邮件进行处理,得
到邮件基本数据以及文件数据。
[0159] 可选地,读取用户邮箱中的增量邮件,包括:获取用户邮箱对应的待同步文件夹;根据增量任务的同步方向,读取与待同步文件夹对应的邮件记录;若是邮件记录为空,则读
取文件夹的第一预设时间段中的邮件作为当前用户的增量邮件;若是邮件记录不为空,则
按照预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
[0160] 具体地,如果任务中带有文件夹名称,则直接处理该文件夹,即待同步文件夹;如果任务中没有文件夹名称,则查询邮件订阅文件夹表中用户的订阅文件夹列表,如果该表
为空,则设置默认文件夹,也即上述的待同步文件夹。在获取到邮箱文件夹列表后,循环同
步处理文件夹列表中的邮件。若文件夹不存在,则跳过处理下一个文件夹。根据同步任务的
同步方向,从邮件信息主表获取该文件夹中,邮件UID最新或最旧的一条记录,包含UID、时
间、Messageid。根据从邮件信息主表中是否获取到对应的邮件记录存在两种不同的处理方
式,具体地,若是数据库返回数据为空,则读取文件夹的第一预设时间段中的邮件作为当前
用户的增量邮件,以IMAP协议从Domino获取该文件夹中用户最近的3天的邮件记录,写入数
据库中。优先地,先获取100条记录,如果结果未达前三天的邮件,则再次循环该过程。获取
邮件头,获取邮件内容,并将所获取的邮件信息,即邮件头和邮件内容写入到邮件信息主
表;如果是会议邮件,同时将邮件信息写入到邮件日程信息推送表。
[0161] 在获取到邮件后,则对增量邮件进行处理,得到邮件基本数据以及文件数据,包括:判断增量邮件的数据量是否大于预设数据量,若是则将增量邮件的邮件正文拆分出来
得到文件数据;判断增量邮件是否含有附件,若是,则根据附件生成文件数据;提取增量邮
件的基本数据得到邮件基本数据。具体地,首先判断如果邮件头(主题、收件人等)和邮件内
容太大(根据数据表设计的字段长度),则将邮件头和内容分拆出来,以文件形式写入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中的
至少一个。最后同时将会议邮件的信息写入到邮件日程信息推送表,用于日程定时同步功
能。
[0162] 具体地,若是数据库返回数据不为空,则按照预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。其中按照预设逻辑读取文件夹的第二预设时间段
中的邮件作为当前用户的增量邮件,包括:获取邮件同步方向,并获取与邮件同步方向对应
的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮
件。
[0163] 具体地,如果数据库返回数据不为空:以下逻辑需根据邮件需同步的方向(同步新邮件或同步历史邮件),采用2种逻辑进行处理,以下以获取新邮件为例。如果是同步历史邮
件,参考保留时间字段的时间,同步相应时间的历史邮件。当数据库中已经存在邮件数据
时,需要与Domino中的邮件进行比较,使两者保持一致。
[0164] 从数据库中获取100条记录,获取最新的一条记录,记录邮件的时间;从Domino中获取100条记录,查询出每条记录的UID、MESSAGEID、邮件时间。这里必须使用folder.fetch
方法和FetchProfile条件。循环从Domino中获取到的数据,直到找到比Oracle中100条数据
更旧的数据为止,与Oracle中的数据进行比较;如果数据库中存在则继续下一条,如果数据
中不存在,则新增;如果数据库中多余,则更新STATE字段状态。
[0165] 最后,执行线程执行完成每个用户的同步任务后:更新邮件推送记录表的SYNCTIME和STATE字段;更新邮件用户信息表的LASTSYNCTIME字段;判断邮件用户信息表的
LASTUIDTIME字段,如果大于(24+‑随机2小时),则进行全量的UID信息同步:查询当前用户
在邮件信息主表中最近一个月邮件的数量和最旧的一条记录时间,写入内存中;根据邮件
数量,用步骤2的方法从Domino获取相应数量的邮件头信息,写入内存中;取数据库和
Domino中的邮件最小的邮件开始时间进行比较,相互比较,同步UID、已读和已删除的邮件
信息。比较方法:用数据库的messageid循环比较Domino中的数据,更新数据库中的数据;如
果邮件删除、已读状态变更、重要性标记变更,则写入到邮件信息增量邮件列表。
[0166] 在其中一个实施例中,将邮件基本数据存储至第一数据库,将文件数据存储至文件数据库之后,还包括:接收终端发送的邮件处理操作,并以事件的形式对邮件处理操作进
行存储;对所存储的事件进行大数据实时分析得到用户轨迹画像,用户轨迹画像用于判断
对应的邮箱是否安全。
[0167] 具体地,在该实施例中,引入移动操作留痕技术,用户的每一步操作动作,以事件的形式进行记录、清洗和压缩,将事件日志收集到大数据平台,通过大数据实时分析,形成
用户轨迹画像,及时发现安全风险,实现用户动作的全程跟踪,解决用户异常登录、账号泄
露、用户故障处理等用户行为跟踪的难题。
[0168] 在一个实施例中,如图8所示,提供了一种邮件显示方法,以该方法应用于图1中的终端为例进行说明,为邮件表现层,表现层即为用户手机终端的APP软件,如何实现与服务
器进行交互获得邮件,将缓存的缓存层邮件信息,以用户可以理解的语言或者页面显示出
来。首先邮件表现层通过标准的接口规范,从缓存层请求邮件列表,快速给用户呈现邮件列
表内容,首次显示邮件内容时,显示一部分邮件正文的预览内容,当需要查看更多的邮件正
文和附件时,再次以静态资源的方式请求缓存层。其次,表现层同时承担着收集APP的安全
管控功能,常见功能包括用户验证、数据加密、用户留痕、邮件水印、权限管控等功能,手机
APP主要通过以下流程,与服务端缓存层进行邮件交互,在交互过程中,需要确保邮件信息
完整,邮件顺序与邮件到达时间保持一致,邮件以增量的方式进行同步,包括以下步骤:
[0169] S802:周期性地从第一数据库同步邮件基本数据。
[0170] 邮件基本数据包括邮件头和邮件内容,邮件头即主题、收件人等,邮件内容即邮件正文等,若是邮件基本数据太大,则将邮件头和邮件正文拆分出来作为文件数据,文件数据
包括附件以及在邮件基本数据太大时的邮件正文等。邮件缓存层在获取到增量邮件后,则
首先将邮件基本数据进行拆分出来,然后判断邮件正文是否大于预设大小,若是,则邮件头
和邮件正文拆分出来作为文件数据。然后继续判断是否存在附件,若是,则将附件也提出来
作为文件数据。
[0171] 其中,终端收集APP订阅文件夹后,循环依次拉取已订阅文件夹中的邮件。后续每预设时间段,例如10分钟同步一次已订阅文件夹中的邮件;手机拉取的邮件缓存在手机本
地,手机提供功能,用户可以选择保留3天、1星期、半个月、1个月、3个月,默认为3天。
[0172] S804:当接收到邮件基本数据读取请求时,显示邮件基本数据。
[0173] 具体地,终端先从第一数据库获取到邮件基本数据,即同步至终端,然后待用户查看邮件的时候,可以获取到所显示的邮件基本数据。
[0174] S806:判断是否接收到文件数据读取请求。
[0175] S808:当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示文件数据。
[0176] 用户在查看邮件基本数据时,当该邮件存在文件数据的时候,用户可以选择读取文件数据,则终端判断是否接收到文件数据读取请求,若是接收到文件数据读取请求时,则
从文件数据库读取对应的文件数据,并显示文件数据。
[0177] 这样用户在APP打开邮件基本信息即可预览邮件的主要内容。其次,当用户需要查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地址指向的内容以文件的
形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器以静态资源的方式直接
返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。本实施例中,大大减少了邮
件基本数据的大小,使得用户的请求能快速响应,而邮件正文、附件的访问量相对邮件列表
的请求少得很多,减少了不必要的数据通信,且静态资源可以根据实际需要,可进一步缓存
在网络设备中,实现相同资源的一次调用多次访问,整体提高系统的运行效率和响应时间。
[0178] 上述邮件显示方法,终端获取邮件的时候,可以首先同步邮件基本数据,在需要同步文件数据的时候,再进行同步,也就是说对于大的正文或附件等无需立刻显示,仅在需要
的时候进行显示,从而减少一开始同步的数据量,避免了由于耗时过长所导致的邮件出现
超时的情况,保证了邮件的正常收取。
[0179] 在其中一个实施例中,周期性地从第一数据库同步邮件基本数据,包括:周期性地从第一数据库提取的邮件基本数据,邮件基本数据包括邮件列表、邮件正文链接地址和/或
附件链接地址。
[0180] 其中,终端可以每隔预设时间,例如10分钟主动去第一数据库提取的邮件基本数据,或者是在手动拉取的时候去第一数据库提取的邮件基本数据。
[0181] 在其中一个实施例中,从文件数据库读取对应的文件数据,包括:根据邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资源的方式获取对应的文件数据。
[0182] 当用户需要查看邮件正文、附件时,再次访问邮件基本信息中的链接地址,链接地址指向的内容以文件的形式存放在文件系统中,用户访问链接地址时,仅需通个Web服务器
以静态资源的方式直接返回,无需再访问用户邮箱,进行邮件的解析等业务流程处理。
[0183] 在其中一个实施例中,周期性地从第一数据库同步邮件基本数据,包括:获取本地的预设类型的邮件的邮件参数,并根据邮件参数获取本地邮件列表;根据邮件参数从服务
器获取预设数量的服务器端邮件列表;将服务器端邮件列表与本地端邮件列表进行比对,
以获取到差异邮件;从第一数据库同步差异邮件的邮件基本数据。
[0184] 具体地,每次同步时,终端执行如下过程,首先根据最后一封邮件的时间和messageid,获取最新的100条邮件的邮件列表;获取邮件时,附带用户名、文件夹、最新或最
旧一封邮件的时间;如果用户手机端获取到1天的邮件列表后,进行双向对比, 使手机端和
服务器端的邮件列表、已读标记、已删除邮件状态保持一致;以每封邮件的messageid、邮件
时间比较本地数据库,如果已存在,则处理下一封邮件,如果不存在,则在手机本地数据库
中缓存;根据每封邮件中反馈的链接信息,下载邮件头、邮件内容进行缓存,附件在邮件打
开时再进行下载;如果手机初步化本地列表为空时,则循环往后拉取3天的历史邮件。
[0185] 在其中一个实施例中,将服务器端邮件列表与本地端邮件列表进行比对之后,还包括:当服务器端邮件列表与本地端邮件列表相同时,则调用手动拉取接口向服务器发送
手动拉取请求。
[0186] 具体地,如果用户手机端刷新最新和最旧的邮件,手机在按照上述步骤进行邮件拉取后,如果未获取到增量的邮件,则手机端调用一次“手机端手动邮件更新请求”,该接口
需要手机端进行调用频率控制,最多1分钟调用一次,调用时附带用户名、同步类型、邮件保
留时间。用户手工拉取采用异步同步的模式,接口先将同步请求写入同步任务表中,手机端
每隔10秒再请求一次列表。
[0187] 手机端打开邮件时,邮件头和正文从本地读取,邮件附件未下载过,则从服务器静态地址获取。邮件发送、发件箱使用Domino旧邮件接口;如果接口返回结果中的“同步结束
标记”为否,则继续循环获取邮件列表;每次同步完成后,请求获取“邮件增量修改信息”,附
带最后一次邮件状态同步的请求时间,同步本地的邮件状态等信息。
[0188] 上述实施例中,首先解决了企业移动邮箱应用的常见技术难题,实现了完全自主研发的移动邮箱平台,不再受限于邮件平台产品的技术限制,企业可以按照自己的业务需
求,合理的设计移动邮箱的产品功能,满足用户的使用体验。同时,通过技术架构的改造,完
全解决了大邮件、复杂邮件解析耗时的技术难题,降低了网络带宽和手机存储的资源要求,
使得终端用户更加容易接入,间接增加了用户的粘合度,为企业移动办公带来了实际的便
利性,提升了工作效率和价值。其次,在该技术平台上,有空间进一步进行技术改造,从缓存
层海量的邮件大数据中,挖掘有价值的数据,也可为企业业务开展提供有力的数据支撑。
[0189] 应该理解的是,虽然图3‑图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步
骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3‑图8中的至
少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻
执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进
行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执
行。
[0190] 在一个实施例中,如图9所示,提供了一种邮件同步装置,包括:拆分模块100和分段存储模块200,其中:
[0191] 拆分模块100,用于获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,文件数据包括邮件正文和/或附件;
[0192] 分段存储模块200,用于将邮件基本数据存储至第一数据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据发送至终端,文件数据库用
于在终端同步邮件的文件数据时,将文件数据发送至终端。
[0193] 在其中一个实施例中,上述的拆分模块100包括:
[0194] 日志生成单元,用于当存在新邮件到达时,则生成新邮件到达日志;
[0195] 缓存单元,用于对日志进行清洗获得增量邮件事件,并将增量邮件事件存储至缓存队列中;
[0196] 增量邮件获取单元,用于根据增量邮件事件获取到增量邮件。
[0197] 在其中一个实施例中,上述邮件同步装置还包括:
[0198] 去重模块,用于根据第一数据库中已经缓存的邮件基本数据对处理得到的邮件基本数据进行去重处理;根据文件数据库中已经缓存的文件数据对处理得到的文件数据进行
去重处理。
[0199] 在其中一个实施例中,每台用于对增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;上述拆分模块100还用于通过多进程多线程的方式获取增
量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据。
[0200] 在其中一个实施例中,多个线程中包括执行线程和主线程;上述拆分模块100包括:
[0201] 竞争单元,用于通过主线程进行线程竞争以确定管理线程;
[0202] 分配单元,用于通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中;
[0203] 存储单元,用于通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;
[0204] 拆分单元,用于通过执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
[0205] 在其中一个实施例中,上述的分配单元包括:
[0206] 地理位置接收子单元,用于获取增量邮件对应的接收地理位置;
[0207] 进程选取子单元,用于选取与接收地理位置对应的进程;
[0208] 分配子单元,用于将增量邮件均衡分配至所选取的进程中。
[0209] 在其中一个实施例中,上述的竞争单元包括:
[0210] 进程状态获取子单元,用于通过主线程周期性地在进程管理表中记录对应的进程的进程状态;
[0211] 竞争子单元,用于通过主线程每隔第一预设时间间隔查询进程管理表中各个进程的进程状态,并根据预设管理线程选取规则从进程状态为活跃状态的进程中选取管理线
程。
[0212] 在其中一个实施例中,上述分配单元包括:
[0213] 第一选取子单元,用于通过管理线程查询进程管理表以获取进程状态为活跃状态的进程,以及获取活跃状态的进程的当前任务量,当前任务量通过用户数量表示;
[0214] 标准化子单元,用于通过管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮件推送记录表中的用户标识进行标准化;
[0215] 均衡子单元,用于根据活跃状态的进程的当前任务量以及标准化后的用户标识,将增量邮件均衡分配至各个进程中。
[0216] 在其中一个实施例中,上述的拆分模块100还包括:
[0217] 超时任务获取单元,用于通过管理线程查询邮件推送记录表以获取超时任务;
[0218] 重新分配单元,用于通过管理线程将超时任务重新均衡分配至其他的活跃进程。
[0219] 在其中一个实施例中,上述的拆分模块100还包括:
[0220] 清理单元,用于通过管理线程定期清理邮件推送记录表以及进程管理表。
[0221] 在其中一个实施例中,上述存储单元包括:
[0222] 去重子单元,用于通过主线程每隔第二预设时间段获取对应进程的增量邮件,并对增量邮件按照用户名进行去重得到增量任务;
[0223] 缓存子单元,用于将增量任务缓存至对应的处理队列中。
[0224] 在其中一个实施例中,上述缓存子单元包括:
[0225] 权限获取孙单元,用于获取分配至对应进程中的增量邮件的用户的管理权限;
[0226] 判断孙单元,用于判断管理权限是否支持邮件缓存;
[0227] 缓存孙单元,用于若是,则将增量任务缓存至对应的处理队列中。
[0228] 在其中一个实施例中,处理队列包括自动队列和手动队列;上述缓存子单元包括:
[0229] 拉取方式获取孙单元,用于获取增量任务对应的拉取方式;
[0230] 缓存孙单元还用于根据拉取方式将增量任务缓存至对应的处理队列中,其中拉取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取时,则将增量任
务缓存至自动队列中,手动拉取的优先级高于自动拉取。
[0231] 在其中一个实施例中,上述的分段存储模块200包括:
[0232] 任务获取单元,用于通过执行线程获取缓存至对应的处理队列中的增量任务;
[0233] 登录单元,用于登录增量任务对应的用户的用户邮箱;
[0234] 邮件处理单元,用于读取用户邮箱中的增量邮件,并对增量邮件进行处理,得到邮件基本数据以及文件数据。
[0235] 在其中一个实施例中,上述的邮件处理单元包括:
[0236] 文件夹获取子单元,用于获取用户邮箱对应的待同步文件夹;
[0237] 邮件记录获取子单元,用于根据增量任务的同步方向,读取与待同步文件夹对应的邮件记录;
[0238] 增量邮件读取子单元,用于若是邮件记录为空,则读取文件夹的第一预设时间段中的邮件作为当前用户的增量邮件;若是邮件记录不为空,则按照预设逻辑读取文件夹的
第二预设时间段中的邮件作为当前用户的增量邮件。
[0239] 在其中一个实施例中,增量邮件读取子单元包括:
[0240] 预设逻辑获取孙单元,用于获取邮件同步方向,并获取与邮件同步方向对应的预设逻辑;
[0241] 增量邮件读取孙单元,用于根据预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件。
[0242] 在其中一个实施例中,上述的邮件处理单元包括:
[0243] 拆分子单元,用于判断增量邮件的数据量是否大于预设数据量,若是则将增量邮件的邮件正文拆分出来得到文件数据;
[0244] 文件数据生成子单元,用于判断增量邮件是否含有附件,若是,则根据附件生成文件数据;
[0245] 邮件基本数据生成子单元,用于提取增量邮件的基本数据得到邮件基本数据。
[0246] 在其中一个实施例中,上述的邮件同步装置还包括:
[0247] 日志生成模块,用于接收终端发送的邮件处理操作,并以事件的形式对邮件处理操作进行存储;
[0248] 用户轨迹画像生成模块,用于对所存储的事件进行大数据实时分析得到用户轨迹画像,用户轨迹画像用于判断对应的邮箱是否安全。
[0249] 关于邮件同步装置的具体限定可以参见上文中对于邮件同步方法的限定,在此不再赘述。上述邮件同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0250] 在一个实施例中,如图10所示,提供了一种邮件显示装置,包括:基本数据同步模块300、显示模块400、判断模块500和文件数据同步模块600,其中:
[0251] 基本数据同步模块300,用于周期性地从第一数据库同步邮件基本数据;
[0252] 显示模块400,用于当接收到邮件基本数据读取请求时,显示邮件基本数据;
[0253] 判断模块500,用于判断是否接收到文件数据读取请求;
[0254] 文件数据同步模块600,用于当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示文件数据。
[0255] 在其中一个实施例中,上述的基本数据同步模块300还用于周期性地从第一数据库提取的邮件基本数据,邮件基本数据包括邮件列表、邮件正文链接地址和/或附件链接地
址。
[0256] 在其中一个实施例中,上述的文件数据同步模块600还用于根据邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资源的方式获取对应的文件数据。
[0257] 在其中一个实施例中,上述的基本数据同步模块300包括:
[0258] 本地邮件列表获取单元,用于获取本地的预设类型的邮件的邮件参数,并根据邮件参数获取本地邮件列表;
[0259] 服务器端邮件列表获取单元,用于根据邮件参数从服务器获取预设数量的服务器端邮件列表;
[0260] 差异邮件获取单元,用于将服务器端邮件列表与本地端邮件列表进行比对,以获取到差异邮件;
[0261] 同步单元,用于从第一数据库同步差异邮件的邮件基本数据。
[0262] 在其中一个实施例中,上述邮件显示装置还包括:
[0263] 手动拉取模块,用于当服务器端邮件列表与本地端邮件列表相同时,则调用手动拉取接口向服务器发送手动拉取请求。
[0264] 关于邮件显示装置的具体限定可以参见上文中对于邮件显示方法的限定,在此不再赘述。上述邮件显示装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0265] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。
其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易
失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该
内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备
的数据库用于存储增量邮件数据。该计算机设备的网络接口用于与外部的终端通过网络连
接通信。该计算机程序被处理器执行时以实现一种邮件同步方法。
[0266] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显
示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的
存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机
程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计
算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过
WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现
一种邮件显示方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计
算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按
键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0267] 本领域技术人员可以理解,图11和12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算
机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件
布置。
[0268] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取增量邮件,并对增量邮件进行
处理以得到邮件基本数据以及文件数据,文件数据包括邮件正文和/或附件;将邮件基本数
据存储至第一数据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,
将邮件基本数据发送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据
发送至终端。
[0269] 在一个实施例中,处理器执行计算机程序时所实现的获取增量邮件,包括:当存在新邮件到达时,则生成新邮件到达日志;对日志进行清洗获得增量邮件事件,并将增量邮件
事件存储至缓存队列中;根据增量邮件事件获取到增量邮件。
[0270] 在一个实施例中,处理器执行计算机程序时所实现的对增量邮件进行处理以得到邮件基本数据以及文件数据之后,还包括:根据第一数据库中已经缓存的邮件基本数据对
处理得到的邮件基本数据进行去重处理;根据文件数据库中已经缓存的文件数据对处理得
到的文件数据进行去重处理。
[0271] 在一个实施例中,处理器执行计算机程序时所涉及的每台用于对增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;处理器执行计算机程序时所
实现的获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通
过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文
件数据。
[0272] 在一个实施例中,处理器执行计算机程序时涉及的多个线程中包括执行线程和主线程;处理器执行计算机程序时所实现的通过多进程多线程的方式获取增量邮件,并对增
量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过主线程进行线程竞争以确
定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中;通过主线
程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行线程对缓存至对应
的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
[0273] 在一个实施例中,处理器执行计算机程序时所实现的将增量邮件均衡分配至各个进程中,包括:获取增量邮件对应的接收地理位置;选取与接收地理位置对应的进程;将增
量邮件均衡分配至所选取的进程中。
[0274] 在一个实施例中,处理器执行计算机程序时所实现的通过主线程进行线程竞争以确定管理线程,包括:通过主线程周期性地在进程管理表中记录对应的进程的进程状态;通
过主线程每隔第一预设时间间隔查询进程管理表中各个进程的进程状态,并根据预设管理
线程选取规则从进程状态为活跃状态的进程中选取管理线程。
[0275] 在一个实施例中,处理器执行计算机程序时所实现的通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中,包括:通过管理线程查询进程管理表以获取进程
状态为活跃状态的进程,以及获取活跃状态的进程的当前任务量,当前任务量通过用户数
量表示;通过管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮
件推送记录表中的用户标识进行标准化;根据活跃状态的进程的当前任务量以及标准化后
的用户标识,将增量邮件均衡分配至各个进程中。
[0276] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过管理线程查询邮件推送记录表以获取超时任务;通过管理线程将超时任务重新均衡分配至其他的活跃进
程。
[0277] 在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过管理线程定期清理邮件推送记录表以及进程管理表。
[0278] 在一个实施例中,处理器执行计算机程序时所实现的通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中,包括:通过主线程每隔第二预设时间段获取对
应进程的增量邮件,并对增量邮件按照用户名进行去重得到增量任务;将增量任务缓存至
对应的处理队列中。
[0279] 在一个实施例中,处理器执行计算机程序时所实现的将增量任务缓存至对应的处理队列中,包括:获取分配至对应进程中的增量邮件的用户的管理权限;判断管理权限是否
支持邮件缓存;若是,则将增量任务缓存至对应的处理队列中。
[0280] 在一个实施例中,处理器执行计算机程序时所涉及的处理队列包括自动队列和手动队列;处理器执行计算机程序时所实现的将增量任务缓存至对应的处理队列中,包括:获
取增量任务对应的拉取方式;根据拉取方式将增量任务缓存至对应的处理队列中,其中拉
取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取时,则将增量
任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
[0281] 在一个实施例中,处理器执行计算机程序时所实现的通过执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据,包括:通过执行线程
获取缓存至对应的处理队列中的增量任务;登录增量任务对应的用户的用户邮箱;读取用
户邮箱中的增量邮件,并对增量邮件进行处理,得到邮件基本数据以及文件数据。
[0282] 在一个实施例中,处理器执行计算机程序时所实现的读取用户邮箱中的增量邮件,包括:获取用户邮箱对应的待同步文件夹;根据增量任务的同步方向,读取与待同步文
件夹对应的邮件记录;若是邮件记录为空,则读取文件夹的第一预设时间段中的邮件作为
当前用户的增量邮件;若是邮件记录不为空,则按照预设逻辑读取文件夹的第二预设时间
段中的邮件作为当前用户的增量邮件。
[0283] 在一个实施例中,处理器执行计算机程序时所实现的按照预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件,包括:获取邮件同步方向,并获取与邮
件同步方向对应的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为当
前用户的增量邮件。
[0284] 在一个实施例中,处理器执行计算机程序时所实现的对增量邮件进行处理,得到邮件基本数据以及文件数据,包括:判断增量邮件的数据量是否大于预设数据量,若是则将
增量邮件的邮件正文拆分出来得到文件数据;判断增量邮件是否含有附件,若是,则根据附
件生成文件数据;提取增量邮件的基本数据得到邮件基本数据。
[0285] 在一个实施例中,处理器执行计算机程序时所实现的将邮件基本数据存储至第一数据库,将文件数据存储至文件数据库之后,还包括:接收终端发送的邮件处理操作,并以
事件的形式对邮件处理操作进行存储;对所存储的事件进行大数据实时分析得到用户轨迹
画像,用户轨迹画像用于判断对应的邮箱是否安全。
[0286] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:周期性地从第一数据库同步邮件
基本数据;当接收到邮件基本数据读取请求时,显示邮件基本数据;判断是否接收到文件数
据读取请求;当接收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示
文件数据。
[0287] 在一个实施例中,处理器执行计算机程序时所实现的周期性地从第一数据库同步邮件基本数据,包括:周期性地从第一数据库提取的邮件基本数据,邮件基本数据包括邮件
列表、邮件正文链接地址和/或附件链接地址。
[0288] 在一个实施例中,处理器执行计算机程序时所实现的从文件数据库读取对应的文件数据,包括:根据邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资源
的方式获取对应的文件数据。
[0289] 在一个实施例中,处理器执行计算机程序时所实现的周期性地从第一数据库同步邮件基本数据,包括:获取本地的预设类型的邮件的邮件参数,并根据邮件参数获取本地邮
件列表;根据邮件参数从服务器获取预设数量的服务器端邮件列表;将服务器端邮件列表
与本地端邮件列表进行比对,以获取到差异邮件;从第一数据库同步差异邮件的邮件基本
数据。
[0290] 在一个实施例中,处理器执行计算机程序时所实现的将服务器端邮件列表与本地端邮件列表进行比对之后,还包括:当服务器端邮件列表与本地端邮件列表相同时,则调用
手动拉取接口向服务器发送手动拉取请求。
[0291] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取增量邮件,并对增量邮件进行处理以得到邮件
基本数据以及文件数据,文件数据包括邮件正文和/或附件;将邮件基本数据存储至第一数
据库,将文件数据存储至文件数据库,第一数据库用于在终端同步邮件时,将邮件基本数据
发送至终端,文件数据库用于在终端同步邮件的文件数据时,将文件数据发送至终端。
[0292] 在一个实施例中,计算机程序被处理器执行时所实现的获取增量邮件,包括:当存在新邮件到达时,则生成新邮件到达日志;对日志进行清洗获得增量邮件事件,并将增量邮
件事件存储至缓存队列中;根据增量邮件事件获取到增量邮件。
[0293] 在一个实施例中,计算机程序被处理器执行时所实现的对增量邮件进行处理以得到邮件基本数据以及文件数据之后,还包括:根据第一数据库中已经缓存的邮件基本数据
对处理得到的邮件基本数据进行去重处理;根据文件数据库中已经缓存的文件数据对处理
得到的文件数据进行去重处理。
[0294] 在一个实施例中,计算机程序被处理器执行时所涉及的每台用于对增量邮件进行处理的服务器中开设有多个进程,每个进程中设置有多个线程;处理器执行计算机程序时
所实现的获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:
通过多进程多线程的方式获取增量邮件,并对增量邮件进行处理以得到邮件基本数据以及
文件数据。
[0295] 在一个实施例中,计算机程序被处理器执行时涉及的多个线程中包括执行线程和主线程;计算机程序被处理器执行时所实现的通过多进程多线程的方式获取增量邮件,并
对增量邮件进行处理以得到邮件基本数据以及文件数据,包括:通过主线程进行线程竞争
以确定管理线程;通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中;通过
主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中;通过执行线程对缓存至
对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据。
[0296] 在一个实施例中,计算机程序被处理器执行时所实现的将增量邮件均衡分配至各个进程中,包括:获取增量邮件对应的接收地理位置;选取与接收地理位置对应的进程;将
增量邮件均衡分配至所选取的进程中。
[0297] 在一个实施例中,计算机程序被处理器执行时所实现的通过主线程进行线程竞争以确定管理线程,包括:通过主线程周期性地在进程管理表中记录对应的进程的进程状态;
通过主线程每隔第一预设时间间隔查询进程管理表中各个进程的进程状态,并根据预设管
理线程选取规则从进程状态为活跃状态的进程中选取管理线程。
[0298] 在一个实施例中,计算机程序被处理器执行时所实现的通过管理线程获取增量邮件,并将增量邮件均衡分配至各个进程中,包括:通过管理线程查询进程管理表以获取进程
状态为活跃状态的进程,以及获取活跃状态的进程的当前任务量,当前任务量通过用户数
量表示;通过管理线程获取增量邮件得到邮件推送记录表,并查询邮件推送记录表,以对邮
件推送记录表中的用户标识进行标准化;根据活跃状态的进程的当前任务量以及标准化后
的用户标识,将增量邮件均衡分配至各个进程中。
[0299] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过管理线程查询邮件推送记录表以获取超时任务;通过管理线程将超时任务重新均衡分配至其他的活跃
进程。
[0300] 在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过管理线程定期清理邮件推送记录表以及进程管理表。
[0301] 在一个实施例中,计算机程序被处理器执行时所实现的通过主线程将分配至对应进程中的增量邮件缓存至对应的处理队列中,包括:通过主线程每隔第二预设时间段获取
对应进程的增量邮件,并对增量邮件按照用户名进行去重得到增量任务;将增量任务缓存
至对应的处理队列中。
[0302] 在一个实施例中,计算机程序被处理器执行时所实现的将增量任务缓存至对应的处理队列中,包括:获取分配至对应进程中的增量邮件的用户的管理权限;判断管理权限是
否支持邮件缓存;若是,则将增量任务缓存至对应的处理队列中。
[0303] 在一个实施例中,计算机程序被处理器执行时所涉及的处理队列包括自动队列和手动队列;计算机程序被处理器执行时所实现的将增量任务缓存至对应的处理队列中,包
括:获取增量任务对应的拉取方式;根据拉取方式将增量任务缓存至对应的处理队列中,其
中拉取方式为手动拉取时,则将增量任务缓存之手动队列中,拉取方式为自动拉取时,则将
增量任务缓存至自动队列中,手动拉取的优先级高于自动拉取。
[0304] 在一个实施例中,计算机程序被处理器执行时所实现的通过执行线程对缓存至对应的处理队列中的增量邮件进行处理,得到邮件基本数据以及文件数据,包括:通过执行线
程获取缓存至对应的处理队列中的增量任务;登录增量任务对应的用户的用户邮箱;读取
用户邮箱中的增量邮件,并对增量邮件进行处理,得到邮件基本数据以及文件数据。
[0305] 在一个实施例中,计算机程序被处理器执行时所实现的读取用户邮箱中的增量邮件,包括:获取用户邮箱对应的待同步文件夹;根据增量任务的同步方向,读取与待同步文
件夹对应的邮件记录;若是邮件记录为空,则读取文件夹的第一预设时间段中的邮件作为
当前用户的增量邮件;若是邮件记录不为空,则按照预设逻辑读取文件夹的第二预设时间
段中的邮件作为当前用户的增量邮件。
[0306] 在一个实施例中,计算机程序被处理器执行时所实现的按照预设逻辑读取文件夹的第二预设时间段中的邮件作为当前用户的增量邮件,包括:获取邮件同步方向,并获取与
邮件同步方向对应的预设逻辑;根据预设逻辑读取文件夹的第二预设时间段中的邮件作为
当前用户的增量邮件。
[0307] 在一个实施例中,计算机程序被处理器执行时所实现的对增量邮件进行处理,得到邮件基本数据以及文件数据,包括:判断增量邮件的数据量是否大于预设数据量,若是则
将增量邮件的邮件正文拆分出来得到文件数据;判断增量邮件是否含有附件,若是,则根据
附件生成文件数据;提取增量邮件的基本数据得到邮件基本数据。
[0308] 在一个实施例中,计算机程序被处理器执行时所实现的将邮件基本数据存储至第一数据库,将文件数据存储至文件数据库之后,还包括:接收终端发送的邮件处理操作,并
以事件的形式对邮件处理操作进行存储;对所存储的事件进行大数据实时分析得到用户轨
迹画像,用户轨迹画像用于判断对应的邮箱是否安全。
[0309] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:周期性地从第一数据库同步邮件基本数据;当接收
到邮件基本数据读取请求时,显示邮件基本数据;判断是否接收到文件数据读取请求;当接
收到文件数据读取请求时,则从文件数据库读取对应的文件数据,并显示文件数据。
[0310] 在一个实施例中,计算机程序被处理器执行时所实现的周期性地从第一数据库同步邮件基本数据,包括:周期性地从第一数据库提取的邮件基本数据,邮件基本数据包括邮
件列表、邮件正文链接地址和/或附件链接地址。
[0311] 在一个实施例中,计算机程序被处理器执行时所实现的从文件数据库读取对应的文件数据,包括:根据邮件基本信息中的邮件正文链接地址和/或附件链接地址,以静态资
源的方式获取对应的文件数据。
[0312] 在一个实施例中,计算机程序被处理器执行时所实现的周期性地从第一数据库同步邮件基本数据,包括:获取本地的预设类型的邮件的邮件参数,并根据邮件参数获取本地
邮件列表;根据邮件参数从服务器获取预设数量的服务器端邮件列表;将服务器端邮件列
表与本地端邮件列表进行比对,以获取到差异邮件;从第一数据库同步差异邮件的邮件基
本数据。
[0313] 在一个实施例中,计算机程序被处理器执行时所实现的将服务器端邮件列表与本地端邮件列表进行比对之后,还包括:当服务器端邮件列表与本地端邮件列表相同时,则调
用手动拉取接口向服务器发送手动拉取请求。
[0314] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑
Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器
(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种
形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存
储器(Dynamic Random Access Memory,DRAM)等。
[0315] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
[0316] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来
说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护
范围。因此,本申请专利的保护范围应以所附权利要求为准。