买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:平安科技(深圳)有限公司
摘要:本申请涉及基础运维技术,提供了一种邮件发送方法、装置、计算机设备和存储介质。所述方法包括:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。采用本方法能够提高邮件发送效率。
主权项:1.一种邮件发送方法,所述方法包括:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送;在所述通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件之前,包括:获取各个运营商标识对应的历史待发送邮件数量;根据各个所述运营商标识对应的历史待发送邮件数量确定所述待发送队列的队列容量;根据所述待发送队列的队列容量确定所述第一线程所选取的待发送邮件的预设数量;所述目标发送单元用于运行多个第二线程,所述通过所述第二线程从所述待发送队列中读取待发送邮件,包括:将多个所述第二线程按照访问时间先后顺序进行排列以使得多个所述第二线程依次访问所述待发送队列;当任意一个所述第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放所述队列锁。
全文数据:邮件发送方法、装置、计算机设备和存储介质技术领域本申请涉及互联网技术领域,特别是涉及一种邮件发送方法、装置、计算机设备和存储介质。背景技术随着互联网技术的迅速发展,电子邮件逐渐取代纸质信件成为人们常用的沟通手段,在实际应用中,邮件系统服务器常常和业务系统服务器对接,根据业务系统不同的业务需求,邮件系统服务器需要向各种不同的运营商发送邮件,邮件系统在发送邮件时,通常向将邮件发送到邮件网关服务器,由邮件网关服务器发送至对应的运营商服务器。传统技术中,网关服务器发送邮件时,通常是直接将需要发送的邮件统一按照时间先后顺序一封一封进行发送,导致发送效率低下。发明内容基于此,有必要针对上述技术问题,提供一种能够提高邮件发送效率的邮件发送方法、装置、计算机设备和存储介质。一种邮件发送方法,所述方法包括:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。在其中一个实施例中,在所述通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件之前,包括:获取各个运营商标识对应的历史待发送邮件数量;根据各个所述运营商标识对应的历史待发送邮件数量确定所述待发送队列的队列容量;根据所述待发送队列的队列容量确定所述第一线程所选取的待发送邮件的数量。在其中一个实施例中,所述目标发送单元用于运行多个第二线程,所述通过所述第二线程从所述待发送队列中读取待发送邮件,包括:将多个所述第二线程按照访问时间先后顺序进行排列以使得多个所述第二线程依次访问所述待发送队列;当任意一个所述第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放所述队列锁。在其中一个实施例中,所述目标发送单元还用于运行第三线程,在所述将读取的所述待发送邮件进行发送之后,所述方法还包括:通过所述第二线程将已发送的邮件写入已发送队列;通过所述第三线程从所述已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。在其中一个实施例中,所述目标发送单元还用于运行第四线程,所述方法还包括:通过所述第四线程获取所述第一线程、所述第二线程及所述第三线程的运行状态,并获取预设时间段内各个所述待发送邮件的发送结果,根据所述发送结果计算发送成功率;当所述运行状态及所述发送成功率满足预设的调整条件时,通过所述第四线程执行预设的调整步骤。一种邮件发送装置,所述装置包括:邮件接收模块,用于接收邮件分发服务器根据邮件类型发送的待发送邮件;运营商标识获取模块,用于获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元;发送模块,包括多个发送单元,所述发送单元用于运行第一线程及第二线程,通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列,通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。在其中一个实施例中,所述装置还包括:邮件数量确定模块,用于获取各个运营商标识对应的历史待发送邮件数量;根据各个所述运营商标识对应的历史待发送邮件数量确定所述待发送队列的队列容量;根据所述待发送队列的队列容量确定所述第一线程所选取的待发送邮件的数量。在其中一个实施例中,所述发送单元用于运行多个第二线程,将多个所述第二线程按照访问时间先后顺序进行排列以使得多个所述第二线程依次访问所述待发送队列;当任意一个所述第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放所述队列锁。一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。上述邮件发送方法、装置、计算机设备和存储介质,通过接收邮件分发服务器根据邮件类型发送的待发送邮件,获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程,通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列,通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送,本申请中,由于在发送邮件时,将邮件按照邮件类型、运营商标识分别进行独立发送,并通过运行多个第二线程,可以充分利用网关服务器的内存资源,保证邮件能以最高的效率顺利发送至各个运营商服务器。附图说明图1为一个实施例中邮件发送方法的应用场景图;图2为一个实施例中邮件发送方法的流程示意图;图3为一个实施例中邮件发送装置的结构框图;图4为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。本申请提供的邮件发送方法,可以应用于如图1所示的应用环境中,包括邮件分发服务器102、至少两个网关服务器104、邮件运营商服务器106。其中,邮件分发服务器102、邮件运行商服务器106分别与网关服务器104通过网络进行通信。网关服务器104接收到邮件分发服务器102根据邮件类型发送的待发送邮件后,获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标发送邮件集合,根据运营商标识确定目标发送邮件集合对应的目标发送单元,其中,目标发送单元运行第一线程及第二线程,通过第一线程从目标发送邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列,通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件发送至对应的邮件运营商服务器106。其中,邮件分发服务器102、邮件运营商服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在一个实施例中,如图2所示,提供了一种邮件发送方法,以该方法应用于图1中的网关服务器104为例进行说明,包括以下步骤:步骤S202,接收邮件分发服务器根据邮件类型发送的待发送邮件。具体地,邮件分发服务器首先根据邮件的用途确定待发送邮件的邮件类型。在一个实施例中,邮件类型可包括营销类邮件和服务类邮件,可先对营销类邮件和服务类邮件设置对应的邮件模板,在发送邮件时,根据待发送邮件对应的邮件模板所属的类型来确定待发送邮件所属的邮件分类,也就是说,当待发送邮件所使用的邮件模板为营销类邮件对应的邮件模板时,将该待发送邮件的邮件类型确定为营销类邮件,当待发送邮件所使用的邮件模板为服务类邮件对应的邮件模板时,将该待发送邮件的邮件类型确定为服务器类邮件,对于未使用邮件模板的待发送邮件,也可以确定为服务类邮件。进一步,邮件分发服务器根据邮件类型将待发送邮件发送至对应的网关服务器。在一个实施例中,至少部署两个网关服务器,其中一个接收邮件分发服务器发送的营销类邮件,另一个接收邮件分发服务器发送的服务类邮件。步骤S204,获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标邮件集合,根据运营商标识从多个发送单元中确定目标邮件集合对应的目标发送单元,目标发送单元用于运行第一线程及第二线程。其中,待发送邮件对应的运营商指的是待发送邮件的收件人地址所属的邮件运行商,举个例子,待发送邮件对应的收件人地址为1234567@qq.com时,则待发送邮件对应的邮件运行商为腾讯,待发送邮件对应的运营商标识用于唯一标识待发送邮件对应的运营商,可以是数字、字母或者其他特殊符号组成,也可以直接是运营商的名称。发送单元指的网关服务器上事先划分的一个独立的内存空间,用于处理邮件的发送任务。具体地,网关服务器接收到待发送邮件后,需要根据待发送邮件对应的运营商标识将待发送邮件发送至对应的运营商服务器,为确保各个运营商的邮件能够顺利发送成功,可根据不同的运营商对邮件进行分类,对于每一个分类,预先分配一个独立的发送单元,这样各个发送单元可以专门针对各自对应的运营商进行邮件发送,从而避免因为某个运营商的邮件在短时间内急剧增加而导致其他运营的邮件不能被顺利发送的情况出现。其中,每一个发送单元与其对应的运营商的运营商标识事先建立绑定关系。在一个实施例中,可根据各个运营商对应的历史邮件数量对各个运营商进行排序,然后对排序在前的预设数量的运营商各分配一个发送单元,对其他的发送量较少的运营商统一分配一个发送单元。本实施例中,网关服务器接收到待发送邮件后,根据待发送邮件的收件人地址可获取待发送邮件对应的运营商标识,然后将待发送邮件加入该运营商标识对应的目标邮件集合,由于发送单元与运营商标识之间事先建立的绑定关系,因此,在将待发送邮件加入到目标邮件集合后,可并根据运营商标识从众多发送单元中确定与该目标邮件集合对应的目标发送单元。步骤S206,通过第一线程从目标邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列。具体地,网关邮件服务器上预先设置多个发送单元,每一个发送单元针对各自对应的运营商的邮件独立进行发送,对于每一个发送单元,在进行邮件发送时,可运行至少一个第一线程,然后通过第一线程从该发送单元对应的目标邮件集合中选取预设数量的待发送邮件,将获取的待发送邮件写入该发送单元中的待发送队列。在一个实施例中,每一个发送单元对应的第一线程所选取的待发送邮件的数量可根据发送单元对应的运营商的历史待发送邮件数量进行确定,具体来说,可首先获取各个运营商标识对应的历史待发送邮件数量,然后根据各个运营商标识对应的历史待发送邮件数量确定待发送队列的队列容量,最后根据待发送队列的队列容量确定第一线程所选取的待发送邮件的数量。步骤S208,通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件进行发送。具体地,每一个发送单元还运行第二线程,通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件发送至该与该发送单元相对应的运营商服务器。在一个实施例中,发送单元可运行多个第二线程,其中,各个发送单元对应的第二线程的数量可由各个发送单元对应的运营商的历史待发送邮件数量确定,具体地,首先获取各个发送单元对应的运营商在预设时间段内例如上一日的待发送邮件总数量,然后获取网关服务器可运行的线程总数量,根据各个发送单元对应的运营商在预设时间段内的待发送邮件总数量及网关服务器可运行的线程总数量按比例确定各个发送单元对应的第二线程数量。举个例子,网关服务器上有三个发送单元,分别为A、B、C,其中,A、B、C各自对应的历史待发送邮件数量分别为10000、20000、30000,网关服务器的可运行的第二线程总数量为6,则发送单元A对应的第二线程数量为6x16=1,发送单元B对应的第二线程数量为6x26=2,发送单元C对应的第二线程数量为6x36=3。在一个实施例中,发送单元在对各自的运营商服务器发送邮件时,可按照与运营商事先约定的速率要求确定邮件发送的时间间隔,然后按照该时间间隔进行邮件发送。上述邮件发送方法中,网关服务器通过接收邮件分发服务器根据邮件类型发送的待发送邮件,获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标邮件集合,根据运营商标识从多个发送单元中确定目标邮件集合对应的目标发送单元,目标发送单元用于运行第一线程及第二线程,通过第一线程从目标邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列,通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件进行发送,本申请中,由于在发送邮件时,将邮件按照邮件类型、运营商标识分别进行独立发送,并通过运行多个第二线程,可以充分利用网关服务器的内存资源,保证邮件能以最高的效率顺利发送至各个运营商服务器。在一个实施例中,步骤S206中,在通过第一线程从目标邮件集合中选取预设数量的待发送邮件之前,上述方法还包括:获取各个运营商标识对应的历史待发送邮件数量;根据各个运营商标识对应的历史待发送邮件数量确定待发送队列的队列容量;根据待发送队列的队列容量确定第一线程所选取的待发送邮件的数量。其中,历史待发送邮件数量指的是各个运营商在当前时间之前的预设时间段内所需要发送的邮件数量,在一个实施例中,为确保选取的邮件能够高效率的发送,历史邮件发送量可以是各个运营商在上一日的待发送邮件数量。具体地,网关服务器获取每一个运营商的历史待发送邮件数量后,根据各个运营商的历史待发送邮件数量确定各个发送单元的历史待发送邮件数量,具体来说,可以将发送单元对应的所有运营商历史待发送邮件的数量进行累加得到该发送单元的历史待发送邮件数量,当然,如果某个发送单元对应的运营商只有一个,则该运营商对应的历史待发送邮件数量即为该发送单元的历史待发送邮件数量。进一步,根据各个发送单元的历史待发送邮件数量及网关服务器可分配的队列总容量确定各个发送单元对应的待发送队列的队列容量。举个例子,网关服务器上有三个发送单元,分别为A、B、C,其中,A、B、C各自对应的历史待发送邮件数量分别为10000、20000、30000,网关服务器的可分配队列总容量为6000M,则分配给发送单元A对应的待发送队列的队列容量为6000x16=1000M,分配给发送单元B对应的待发送队列的队列容量为6000x26=2000M,分配给发送单元C对应的待发送队列的队列容量为6000x36=3000M。进一步,发送单元通过第一线程选取待发送邮件时,确保所选取的所有待发送邮件的内存大小不超过该待发送单元对应的待发送队列的队列容量。上述实施例中,通过历史待发送邮件数量最终确定第一线程所选取的待发送邮件数量可以确定网关服务器的运行资源得到充分利用,从而提高邮件的发送效率。在一个实施例中,步骤S208中,通过第二线程从待发送队列中读取待发送邮件,包括:将多个第二线程按照访问时间先后顺序进行排列以使得多个第二线程依次访问待发送队列;当任意一个第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放队列锁。本实施例中,每一个发送单元都可运行有多个第二线程,对于每一个发送单元,可将访问待发送队列的多个第二线程按照访问时间先后进行排列,当任意一个第二线程开始从待发送队列中读取待发送邮件时,获取队列锁,通过该队列锁将待发送队列进行锁定,使得其他线程无法同时从队列中读取数据,从而避免了多个线程同时读取到同一个待发送邮件,当读取待发送邮件的第二线程完成读取时,释放该队列锁,此时,排在下一位的第二线程开始从待发送队列中读取待发送邮件,再次对待发送队列进行加锁操作。在一个实施例中,目标发送单元还用于运行第三线程,步骤S208中,在将读取的待发送邮件进行发送之后,方法还包括:通过第二线程将已发送的邮件写入已发送队列;通过第三线程从已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。具体地,每一个目标发送单元都运行至少一个第三线程,在第二线程将邮件发送并将已发送的邮件写入已发送队列后,第三线程从已发送队列中读取已发送邮件,此时,读取的已发送邮件的状态为已发送,第三队列每读取一封邮件,将该邮件的已发送状态写入数据库中。在一个实施例中,目标发送单元还用于运行第四线程,上述方法还包括:通过第四线程获取第一线程、第二线程及第三线程的运行状态,并获取预设时间段内各个待发送邮件的发送结果,根据发送结果计算发送成功率;当运行状态及发送成功率满足预设的调整条件时,通过第四线程执行预设的调整步骤。具体地,每一个发送单元都运行有第四线程,通过第四线程,可对第一线程、第二线程及第三线程的运行状态进行监控,判断这些线程是否正常工作,同时第四线程还可获取发送单元所发送的各个邮件的发送结果,根据发送结果可计算该发送单元在预设时间段内的发送成功率,发送成功率可根据预设时间内该发送单元发送成功的邮件数量N与该发送单元在该预设时间段内的发送邮件总数量的比值得到,即发送成功率=NM。在一个实施例中,预设的调整步骤包括生成警告信息、调整待发送队列容量、调整线程数量、调整邮件发送时间间隔中的至少一种,具体地,若线程状态正常且发送成功率小于预设阈值时,可调整待发送队列容量、或者调整线程数量、或者调整邮件发送时间间隔;若线程状态不正常且发送成功率小于预设阈值时,则生成警告信息。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,如图3所示,提供了一种邮件发送装置300,包括:邮件接收模块302、运营商标识获取模块304和发送模块306,其中:邮件接收模块302用于接收邮件分发服务器根据邮件类型发送的待发送邮件;运营商标识获取模块304用于获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标邮件集合,根据运营商标识从多个发送单元中确定目标邮件集合对应的目标发送单元;发送模块306包括多个发送单元,所述发送单元用于运行第一线程及第二线程,通过第一线程从目标邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列,通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件进行发送。在一个实施例中,上述装置还包括:邮件数量确定模块,用于获取各个运营商标识对应的历史待发送邮件数量,根据各个运营商标识对应的历史待发送邮件数量确定待发送队列的队列容量,根据待发送队列的队列容量确定第一线程所选取的待发送邮件的数量。在一个实施例中,发送单元用于运行多个第二线程,将多个第二线程按照访问时间先后顺序进行排列以使得多个第二线程依次访问待发送队列,当任意一个第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放队列锁。在一个实施例中,发送单元还用于运行第三线程,通过第二线程将已发送的邮件写入已发送队列,通过第三线程从已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。在一个实施例中,发送单元还用于运行第四线程,通过第四线程获取第一线程、第二线程及第三线程的运行状态,并获取预设时间段内各个待发送邮件的发送结果,根据发送结果计算发送成功率,当运行状态及发送成功率满足预设的调整条件时,通过第四线程执行预设的调整步骤。关于邮件发送装置的具体限定可以参见上文中对于邮件发送方法的限定,在此不再赘述。上述邮件发送装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储与邮件相关的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种邮件发送方法。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标邮件集合,根据运营商标识从多个发送单元中确定目标邮件集合对应的目标发送单元,目标发送单元用于运行第一线程及第二线程;通过第一线程从目标邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列;通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件进行发送。在一个实施例中,在通过第一线程从目标邮件集合中选取预设数量的待发送邮件之前,处理器执行计算机程序时还实现以下步骤:获取各个运营商标识对应的历史待发送邮件数量;根据各个运营商标识对应的历史待发送邮件数量确定待发送队列的队列容量;根据待发送队列的队列容量确定第一线程所选取的待发送邮件的数量。在一个实施例中,目标发送单元用于运行多个第二线程,通过第二线程从待发送队列中读取待发送邮件,包括:将多个第二线程按照访问时间先后顺序进行排列以使得多个第二线程依次访问待发送队列;当任意一个第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放队列锁。在一个实施例中,目标发送单元还用于运行第三线程,在将读取的待发送邮件进行发送之后,处理器执行计算机程序时还实现以下步骤:通过第二线程将已发送的邮件写入已发送队列;通过第三线程从已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。在一个实施例中,目标发送单元还用于运行第四线程,处理器执行计算机程序时还实现以下步骤:通过第四线程获取第一线程、第二线程及第三线程的运行状态,并获取预设时间段内各个待发送邮件的发送结果,根据发送结果计算发送成功率;当运行状态及发送成功率满足预设的调整条件时,通过第四线程执行预设的调整步骤。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取待发送邮件对应的运营商标识,将待发送邮件分配至与运营商标识对应的目标邮件集合,根据运营商标识从多个发送单元中确定目标邮件集合对应的目标发送单元,目标发送单元用于运行第一线程及第二线程;通过第一线程从目标邮件集合中选取预设数量的待发送邮件,并将获取的待发送邮件写入对应的待发送队列;通过第二线程从待发送队列中读取待发送邮件,并将读取的待发送邮件进行发送。在一个实施例中,在通过第一线程从目标邮件集合中选取预设数量的待发送邮件之前,计算机程序被处理器执行时还实现以下步骤:获取各个运营商标识对应的历史待发送邮件数量;根据各个运营商标识对应的历史待发送邮件数量确定待发送队列的队列容量;根据待发送队列的队列容量确定第一线程所选取的待发送邮件的数量。在一个实施例中,目标发送单元用于运行多个第二线程,通过第二线程从待发送队列中读取待发送邮件,包括:将多个第二线程按照访问时间先后顺序进行排列以使得多个第二线程依次访问待发送队列;当任意一个第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放队列锁。在一个实施例中,目标发送单元还用于运行第三线程,在将读取的待发送邮件进行发送之后,计算机程序被处理器执行时还实现以下步骤:通过第二线程将已发送的邮件写入已发送队列;通过第三线程从已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。在一个实施例中,目标发送单元还用于运行第四线程,计算机程序被处理器执行时还实现以下步骤:通过第四线程获取第一线程、第二线程及第三线程的运行状态,并获取预设时间段内各个待发送邮件的发送结果,根据发送结果计算发送成功率;当运行状态及发送成功率满足预设的调整条件时,通过第四线程执行预设的调整步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和或易失性存储器。非易失性存储器可包括只读存储器ROM、可编程ROMPROM、电可编程ROMEPROM、电可擦除可编程ROMEEPROM或闪存。易失性存储器可包括随机存取存储器RAM或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAMSRAM、动态RAMDRAM、同步DRAMSDRAM、双数据率SDRAMDDRSDRAM、增强型SDRAMESDRAM、同步链路SynchlinkDRAMSLDRAM、存储器总线Rambus直接RAMRDRAM、直接存储器总线动态RAMDRDRAM、以及存储器总线动态RAMRDRAM等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
权利要求:1.一种邮件发送方法,所述方法包括:接收邮件分发服务器根据邮件类型发送的待发送邮件;获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元,所述目标发送单元用于运行第一线程及第二线程;通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列;通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。2.根据权利要求1所述的方法,其特征在于,在所述通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件之前,包括:获取各个运营商标识对应的历史待发送邮件数量;根据各个所述运营商标识对应的历史待发送邮件数量确定所述待发送队列的队列容量;根据所述待发送队列的队列容量确定所述第一线程所选取的待发送邮件的数量。3.根据权利要求1所述的方法,其特征在于,所述目标发送单元用于运行多个第二线程,所述通过所述第二线程从所述待发送队列中读取待发送邮件,包括:将多个所述第二线程按照访问时间先后顺序进行排列以使得多个所述第二线程依次访问所述待发送队列;当任意一个所述第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放所述队列锁。4.根据权利要求1至3任意一项所述的方法,其特征在于,所述目标发送单元还用于运行第三线程,在所述将读取的所述待发送邮件进行发送之后,所述方法还包括:通过所述第二线程将已发送的邮件写入已发送队列;通过所述第三线程从所述已发送队列中读取已发送邮件,将获取的已发送邮件的当前状态存储至数据库。5.根据权利要求4所述的方法,其特征在于,所述目标发送单元还用于运行第四线程,所述方法还包括:通过所述第四线程获取所述第一线程、所述第二线程及所述第三线程的运行状态,并获取预设时间段内各个所述待发送邮件的发送结果,根据所述发送结果计算发送成功率;当所述运行状态及所述发送成功率满足预设的调整条件时,通过所述第四线程执行预设的调整步骤。6.一种邮件发送装置,其特征在于,所述装置包括:邮件接收模块,用于接收邮件分发服务器根据邮件类型发送的待发送邮件;运营商标识获取模块,用于获取所述待发送邮件对应的运营商标识,将所述待发送邮件分配至与所述运营商标识对应的目标邮件集合,根据所述运营商标识从多个发送单元中确定所述目标邮件集合对应的目标发送单元;发送模块,包括多个发送单元,所述发送单元用于运行第一线程及第二线程,通过所述第一线程从所述目标邮件集合中选取预设数量的待发送邮件,并将获取的所述待发送邮件写入对应的待发送队列,通过所述第二线程从所述待发送队列中读取待发送邮件,并将读取的所述待发送邮件进行发送。7.根据权利要求6所述的方法,其特征在于,所述装置还包括:邮件数量确定模块,用于获取各个运营商标识对应的历史待发送邮件数量;根据各个所述运营商标识对应的历史待发送邮件数量确定所述待发送队列的队列容量;根据所述待发送队列的队列容量确定所述第一线程所选取的待发送邮件的数量。8.根据权利要求6所述的方法,其特征在于,所述发送单元用于运行多个第二线程,将多个所述第二线程按照访问时间先后顺序进行排列以使得多个所述第二线程依次访问所述待发送队列;当任意一个所述第二线程开始读取待发送邮件时,获取队列锁,并在读取成功后释放所述队列锁。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
百度查询: 平安科技(深圳)有限公司 邮件发送方法、装置、计算机设备和存储介质
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。