著录项信息
专利名称 | 电子邮件发送方法及系统 |
申请号 | CN201310303764.3 | 申请日期 | 2013-07-18 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-11-06 | 公开/公告号 | CN103384219A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/58 | IPC分类号 | H04L12/58;H04L12/861查看分类表>
|
申请人 | 新浪网技术(中国)有限公司 | 申请人地址 | 北京市海淀区北四环西路58号理想国际大厦***
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 新浪网技术(中国)有限公司 | 当前权利人 | 新浪网技术(中国)有限公司 |
发明人 | 张亮 |
代理机构 | 北京市京大律师事务所 | 代理人 | 张璐;方晓明 |
摘要
本发明公开了一种电子邮件发送方法及系统,所述方法包括:电子邮件发送系统的邮件分发模块每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理:对于当前处理的电子邮件,在确定对应于该电子邮件的接收邮件服务器的发送队列未满的情况下,且在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数小于针对该发信人与该接收邮件服务器所设置的次数上限值后,将该电子邮件存入到对应所述接收邮件服务器的发送队列中;电子邮件发送系统的邮件发送模块每隔设定时间段,从各发送队列中获取电子邮件向对应接收邮件服务器进行发送。从而,减少了退信数量,提高了电子邮件的发送成功率。
1.一种电子邮件发送方法,其特征在于,包括:
电子邮件发送系统的邮件分发模块每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理:
对于当前处理的电子邮件,所述邮件分发模块在确定对应于该电子邮件的接收邮件服务器的发送队列未满的情况下,在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;若查找到的次数小于针对该发信人与该接收邮件服务器所设置的次数上限值,则将该电子邮件存入到对应所述接收邮件服务器的发送队列中;以及
所述电子邮件发送系统的邮件发送模块每隔设定时间段,从各发送队列中获取电子邮件向对应于该电子邮件的接收邮件服务器进行发送;其中,发送一个电子邮件的过程包括:
所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1后,发送该电子邮件。
2.如权利要求1所述的方法,其特征在于,在所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,还包括:
若所述邮件发送模块确定所述缓存模块中没有存储针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,则生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,并初始化该变量的值为0后,将其存储到所述缓存模块中。
3.如权利要求2所述的方法,其特征在于,所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,具体包括:
所述邮件发送模块生成一个变量,该变量的名称由该电子邮件的发信人的信息、该电子邮件的接收邮件服务器的信息,以及所述单位时间的信息依据设定规则所组成;以及所述在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,具体包括:
所述邮件分发模块对于所述当前处理的电子邮件,确定出所述当前处理的电子邮件的发信人信息、接收邮件服务器的信息,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称后,在所述缓存模块中查找该变量名称所对应的变量的值;以及
所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1,具体包括:
所述邮件发送模块对于当前获取的电子邮件,确定出所述当前获取的电子邮件的发信人信息、接收邮件服务器的信息,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称后,将所述缓存模块中该变量名称所对应的变量的值加1。
4.如权利要求3所述的方法,其特征在于,所述在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,具体包括:
所述邮件分发模块对于所述当前处理的电子邮件,确定出对应该电子邮件的接收邮件服务器的单位时间后,在所述缓存模块中查找到针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;以及所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,具体包括:所述邮件发送模块确定出对应该电子邮件的接收邮件服务器的单位时间后,生成针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量;以及
所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1,具体包括:
所述邮件发送模块对于当前获取的电子邮件,确定出对应所述当前获取的电子邮件的接收邮件服务器的单位时间后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1。
5.如权利要求2-4任一所述的方法,其特征在于,在所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量后,还包括:
所述缓存模块对于由所述邮件发送模块生成的变量,根据该变量的变量名称中的单位时间,维护该变量的生命周期;并在该变量的生命周期终止时,删除该变量。
6.如权利要求1-4任一所述的方法,其特征在于,在所述发送该电子邮件后,还包括:
若该电子邮件发送失败,所述邮件发送模块获取到该电子邮件发送失败的原因为该电子邮件的发信人单位时间内发送邮件次数超过限制,则将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值,修改为所述缓存模块中当前存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
7.一种电子邮件发送系统,其特征在于,包括:
邮件分发模块和缓存模块,所述邮件分发模块用于每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理:对于当前处理的电子邮件,所述邮件分发模块在确定对应于该电子邮件的接收邮件服务器的发送队列未满的情况下,在所述缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;若查找到的次数小于针对该发信人与该接收邮件服务器所设置的次数上限值,则将该电子邮件存入到对应所述接收邮件服务器的发送队列中;
邮件发送模块,用于每隔设定时间段从各发送队列中获取电子邮件向对应于该电子邮件的接收邮件服务器进行发送;其中,发送一个电子邮件的过程包括:所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1后,发送该电子邮件。
8.如权利要求7所述的系统,其特征在于,
所述邮件发送模块还用于在所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,若确定所述缓存模块中没有存储针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,则生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,并初始化该变量的值为0后,将其存储到所述缓存模块中。
9.如权利要求8所述的系统,其特征在于,
所述缓存模块还用于接收到所述邮件发送模块生成的变量后,根据该变量的变量名称中的单位时间,维护该变量的生命周期;并在该变量的生命周期终止时,删除该变量。
10.如权利要求7-9任一所述的系统,其特征在于,
所述邮件发送模块还用于在所述发送该电子邮件后,若该电子邮件发送失败,所述邮件发送模块获取到该电子邮件发送失败的原因为该电子邮件的发信人单位时间内发送邮件次数超过限制,则将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值,修改为所述缓存模块中当前存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
电子邮件发送方法及系统
技术领域
[0001] 本发明涉及互联网领域,尤其涉及一种电子邮件发送方法及系统。
背景技术
[0002] 电子邮件(electronic mail)是一种用电子手段提供信息交换的通信方式,是Internet(互联网)应用最广的服务;通过网络的电子邮件发送系统,用户可以快速、低廉的方式与其他网络用户联系。
[0003] 电子邮件发送过程通常为:邮件服务器接收到发信人由客户端发送的邮件信息后,对接收的邮件信息进行检查,若检查不符合邮件标准则返回页面信息提示用户重写;若检查符合邮件标准,则将接收的邮件信息格式化处理成电子邮件。为便于描述,本文中将接收邮件信息、并生成电子邮件的邮件服务器简称为发送邮件服务器。
[0004] 发送邮件服务器向该电子邮件的发信人的地址所在的邮件服务器发送该电子邮件;为便于描述,本文中将电子邮件的发信人的地址所在的邮件服务器简称为接收邮件服务器。
[0005] 接收邮件服务器为了避免受到邮件攻击,或者接收过多的垃圾文件而导致系统的崩溃,通常都会设置一个单位时间接收邮件次数的上限;如果接收邮件服务器在单位时间内接收某个发信人的邮件次数达到了该上限,则接收邮件服务器将拒收该发信人后续发送的邮件。
[0006] 然而,在实际应用中,经常会有电子邮件因为接收邮件服务器设置的单位时间接收邮件次数的上限而被拒收、退回到发送邮件服务器;从而导致发送邮件服务器邮件发送成功率降低,退信数量较高,以致加重发送邮件服务器的处理负担,并降低了发送邮件服务器发送电子邮件的效率。
[0007] 而且,拒收的电子邮件通常会被发送邮件服务器放到发送队列的队尾等待下次发送;在进行下次发送时,有可能接收邮件服务器仍处于拒收该电子邮件的状态,并触发更高级的限制——对该电子邮件的发信人延长拒收时间。这样就会导致该电子邮件被发送邮件服务器反复地发送、被接收邮件服务器反复拒收;更浪费了发送邮件服务器的资源,使得发送邮件服务器发送电子邮件的效率低。
[0008] 因此,有必要提供一种退信数量少、具有更高发送成功率的电子邮件发送方法。
发明内容
[0009] 针对上述现有技术存在的缺陷,本发明提供了一种电子邮件发送方法及系统,用以提高电子邮件的发送成功率。
[0010] 根据本发明的一个方面,提供了一种电子邮件发送方法,包括:
[0011] 电子邮件发送系统的邮件分发模块每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理:
[0012] 对于当前处理的电子邮件,所述邮件分发模块在确定对应于该电子邮件的接收邮件服务器的发送队列未满的情况下,在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;若查找到的次数小于针对该发信人与该接收邮件服务器所设置的次数上限值,则将该电子邮件存入到对应所述接收邮件服务器的发送队列中;以及
[0013] 所述电子邮件发送系统的邮件发送模块每隔设定时间段,从各发送队列中获取电子邮件向对应接收邮件服务器进行发送;其中,发送一个电子邮件的过程包括:
[0014] 所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1后,发送该电子邮件。
[0015] 进一步,在所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,还包括:
[0016] 若所述邮件发送模块确定所述缓存模块中没有存储针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,则生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,并初始化该变量的值为0后,将其存储到所述缓存模块中。
[0017] 较佳地,所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,具体包括:
[0018] 所述邮件发送模块生成一个变量,该变量的名称由该电子邮件的发信人的信息、该电子邮件的接收邮件服务器的信息,以及所述单位时间的信息依据设定规则所组成;以及
[0019] 所述在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,具体包括:
[0020] 所述邮件分发模块对于所述当前处理的电子邮件,确定出所述当前处理的电子邮件的发信人信息、接收邮件服务器的信息,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称后,在所述缓存模块中查找该变量名称所对应的变量的值;以及
[0021] 所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1,具体包括:
[0022] 所述邮件发送模块对于当前获取的电子邮件,确定出所述当前获取的电子邮件的发信人信息、接收邮件服务器的信息,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称后,将所述缓存模块中该变量名称所对应的变量的值加1。
[0023] 或者,所述在缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,具体包括:
[0024] 所述邮件分发模块对于所述当前处理的电子邮件,确定出对应该电子邮件的接收邮件服务器的单位时间后,在所述缓存模块中查找到针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;以及[0025] 所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,具体包括:所述邮件发送模块确定出对应该电子邮件的接收邮件服务器的单位时间后,生成针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量;以及
[0026] 所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1,具体包括:
[0027] 所述邮件发送模块对于当前获取的电子邮件,确定出对应所述当前获取的电子邮件的接收邮件服务器的单位时间后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1。
[0028] 较佳地,在所述生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量后,还包括:
[0029] 所述缓存模块对于由所述邮件发送模块生成的变量,根据该变量的变量名称中的单位时间,维护该变量的生命周期;并在该变量的生命周期终止时,删除该变量。
[0030] 较佳地,在所述发送该电子邮件后,还包括:
[0031] 若该电子邮件发送失败,所述邮件发送模块获取到该电子邮件发送失败的原因为该电子邮件的发信人单位时间内发送邮件次数超过限制,则将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值,修改为所述缓存模块中当前存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
[0032] 根据本发明的另一个方面,还提供了一种电子邮件发送系统,包括:
[0033] 邮件分发模块和缓存模块,所述邮件分发模块用于每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理:对于当前处理的电子邮件,所述邮件分发模块在确定对应接收邮件服务器的发送队列未满的情况下,在所述缓存模块中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;若查找到的次数小于针对该发信人与该接收邮件服务器所设置的次数上限值,则将该电子邮件存入到对应所述接收邮件服务器的发送队列中;
[0034] 邮件发送模块,用于每隔设定时间段从各发送队列中获取电子邮件向对应接收邮件服务器进行发送;其中,发送一个电子邮件的过程包括:所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,将所述缓存模块中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1后,发送该电子邮件。
[0035] 较佳地,所述邮件发送模块还用于在所述邮件发送模块从其中一个发送队列中获取一个电子邮件后,若确定所述缓存模块中没有存储针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,则生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量,并初始化该变量的值为0后,将其存储到所述缓存模块中。
[0036] 较佳地,所述缓存模块还用于接收到所述邮件发送模块生成的变量后,根据该变量的变量名称中的单位时间,维护该变量的生命周期;并在该变量的生命周期终止时,删除该变量。
[0037] 较佳地,所述邮件发送模块还用于在所述发送该电子邮件后,若该电子邮件发送失败,所述邮件发送模块获取到该电子邮件发送失败的原因为该电子邮件的发信人单位时间内发送邮件次数超过限制,则将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值,修改为所述缓存模块中当前存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
[0038] 本发明的技术方案中,电子邮件发送系统采用了待发送队列和发送队列双队列的方式,将从客户端接收到的电子邮件存入待发送队列,在判断出针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数小于接收邮件服务器的单位时间接收邮件次数的上限后,才将该电子邮件进行发送,否则重新存入到待发送队列中,等待下次发送;这样,尽量避免了因超过接收邮件服务器的单位时间接收邮件次数的上限而导致退信,从而使得电子邮件发送系统具有更高的发送成功率。
[0039] 进一步,本发明的技术方案中,还可以在确定出电子邮件的发信人单位时间内发送邮件的次数超过限制而导致电子邮件发送失败后,自动将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值进行修改,提高了电子邮件发送系统的自适应能力。
附图说明
[0040] 图1为本发明实施例的电子邮件发送系统的内部结构框图;
[0041] 图2为本发明实施例的邮件分发模块对从待发送队列获取待发送的电子邮件进行处理的具体过的流程图;
[0042] 图3为本发明实施例的邮件发送模块从发送队列中获取电子邮件向对应接收邮件服务器进行发送的具体过程的流程图。
具体实施方式
[0043] 以下将结合附图对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
[0044] 本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。
[0045] 本发明的发明人考虑到,在发送邮件服务器设置一个可以根据接收邮件服务器的单位时间接收邮件次数的上限,自动控制本服务器的邮件发送情况,从而尽量避免因超过接收邮件服务器的单位时间接收邮件次数的上限而导致退信,从而减少退信数量,提高电子邮件的发送成功率。
[0046] 下面结合附图详细说明本发明的技术方案。本发明提供的设置于发送邮件服务器中的电子邮件发送系统,其内部结构框图,如图1所示,包括:邮件生成模块101、邮件分发模块102、邮件发送模块103,以及缓存模块104。
[0047] 发信人通过客户端登录电子邮件发送系统后,填写邮件信息;客户端将邮件信息发送到电子邮件发送系统后,电子邮件发送系统的邮件生成模块101判断接收的邮件信息是否符合邮件标准;若不符合,则向客户端返回页面信息,提示发信人进行重新填写;若符合,根据接收的邮件信息生成电子邮件后,将该电子邮件作为待发送的电子邮件存入待发送队列。
[0048] 邮件分发模块102用于每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行处理,并将符合要求的待发送的电子邮件存入到对应接收邮件服务器的发送队列中;即在设定周期到达后,邮件分发模块102从待发送队列依次获取待发送的电子邮件进行处理,处理过程中将符合要求的待发送的电子邮件存入到对应接收邮件服务器的发送队列中。邮件分发模块102从待发送队列获取待发送的电子邮件进行处理的具体方法将在后续进行介绍。
[0049] 邮件发送模块103用于每隔设定时间段从各发送队列中获取电子邮件向对应接收邮件服务器进行发送;即在设定周期到达后,邮件发送模块103从各发送队列中获取电子邮件向对应接收邮件服务器进行发送;邮件发送模块103获取电子邮件向对应接收邮件服务器进行发送的具体方法将在后续进行介绍。
[0050] 缓存模块104用于存储针对电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
[0051] 具体地,邮件分发模块102对从待发送队列获取待发送的电子邮件进行处理的具体过程,流程图如图2所示,包括如下步骤:
[0052] S201:邮件分发模块102从待发送队列获取待发送的电子邮件。
[0053] 具体地,邮件分发模块102每隔设定时间段,依次从待发送队列获取待发送的电子邮件进行如后续步骤所述的处理;即在设定周期到达时,邮件分发模块102依次从待发送队列获取待发送的电子邮件进行如后续步骤所述的处理。所述设定时间段、设定周期可以由技术人员根据实际情况设置,例如可以设置设定时间段、设定周期为1分钟,即邮件分发模块102可以每隔1分钟,依次从待发送队列获取待发送的电子邮件进行处理。
[0054] S202:对于当前处理的电子邮件,邮件分发模块102确定对应于该电子邮件的接收邮件服务器的发送队列是否未满;若未满,则执行步骤S203;否则,跳转到S206。
[0055] 具体地,邮件分发模块102在从待发送队列获取一个待发送的电子邮件后,将当前获取的电子邮件作为当前处理的电子邮件,并确定对应于该电子邮件的接收邮件服务器的发送队列是否未满;事实上,在电子邮件发送系统中,对于每个接收邮件服务器,均设置有对应于该接收邮件服务器的发送队列;对于每个发送队列都设置有一个邮件存储数量的上限。当发送队列中存储的电子邮件的数量达到设置的邮件存储数量的上限,则确定该发送队列已满;若发送队列中存储的电子邮件的数量小于设置的邮件存储数量的上限,则确定该发送队列未满。例如,可以设置邮件存储数量的上限为10000。
[0056] 邮件分发模块102在确定对应于当前处理的电子邮件的接收邮件服务器的发送队列未满,则执行步骤S203;否则,跳转到S206。
[0057] S203:邮件分发模块102在缓存模块104中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
[0058] 具体地,邮件分发模块102对于当前处理的电子邮件,确定出对应该电子邮件的接收邮件服务器的单位时间后,在缓存模块104中查找到针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;其中,单位时间可以具体设定为1分钟、5分钟。
[0059] 事实上,不同的接收邮件服务器可能对应不同的单位时间,例如,qq接收邮件服务器可能对应的单位时间为5分钟;新浪接收邮件服务器可能对应的单位时间为6分钟。也就是说,接收邮件服务器与单位时间之间可能具有对应关系;对应于接收邮件服务器的单位时间具体可以根据该接收邮件服务器的运营商所提供的参数来确定。
[0060] 缓存模块104存储针对电子邮件的发信人所统计的单位时间内发送邮件到接收邮件服务器的次数的方式具体可以是以变量的形式进行存储;即针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数是以变量的形式存储在缓存模块104中,变量的名称由该电子邮件的发信人的信息、该电子邮件的接收邮件服务器的信息,以及所述单位时间的信息依据设定规则所组成,且变量的值(value)为针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。例如,该电子邮件的发信人为a@a.com,收信人为b@b.com,对应接收邮件服务器b.com的单位时间为5分钟,设定规则为“电子邮件的发信人_该电子邮件的接收邮件服务器_单位时间”,则针对该a@a.com所统计的5分钟内发送邮件到b.com的次数的变量的名称为:a@a.com_b.com_5min,变量的值为a@a.com在5分钟内发送邮件到b.com的次数。
[0061] 这样,邮件分发模块102在缓存模块104中查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的具体方法可以是,邮件分发模块102对于当前处理的电子邮件,确定出当前处理的电子邮件的发信人信息、接收邮件服务器的信息后,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称,在缓存模块104中查找该变量名称所对应的变量的值,从而查找到针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数。
[0062] S204:邮件分发模块102判断查找到的次数是否小于针对该发信人与该接收邮件服务器所设置的次数上限值;若是,则执行步骤S205;否则,跳转到步骤S206。
[0063] 具体地,针对该发信人与该接收邮件服务器所设置的次数上限值具体可以由技术人员根据该接收服务器的相关参数进行设置的;比如,相关参数可以为该接收服务器所设置的单位时间接收邮件次数的上限的参数。
[0064] S205:邮件分发模块102将该电子邮件存入到对应接收邮件服务器的发送队列中后继续执行步骤S201。
[0065] S206:邮件分发模块102将获取的该电子邮件重新存入待发送队列后继续执行步骤S201。
[0066] 上述的邮件发送模块103从发送队列中获取电子邮件向对应接收邮件服务器进行发送的具体过程,流程图如图3所示,包括如下步骤:
[0067] S301:邮件发送模块103从其中一个发送队列中获取一个电子邮件。
[0068] S302:邮件发送模块103确定缓存模块104中是否存储有针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数;若有,则执行步骤S303;否则,执行步骤S313。
[0069] S303:邮件发送模块103将缓存模块104中存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1。
[0070] 具体地,邮件发送模块103对于当前获取的电子邮件,确定出对应当前获取的电子邮件的接收邮件服务器的单位时间后,将缓存模块104中存储的针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数加1。
[0071] 也就是,邮件发送模块103对于当前获取的电子邮件,确定出当前获取的电子邮件的发信人信息、接收邮件服务器的信息,将确定出的发信人信息、接收邮件服务器的信息,以及所述单位时间的信息依据设定规则组成一个变量名称后,将缓存模块104中该变量名称所对应的变量的值加1。
[0072] S304:邮件发送模块103发送该电子邮件。
[0073] S313:邮件发送模块103生成针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量。
[0074] 具体地,邮件发送模块103确定出对应该电子邮件的接收邮件服务器的单位时间后,生成针对该电子邮件的发信人所统计的、在确定出的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数的变量。
[0075] 也就是,邮件发送模块103生成一个变量,该变量的名称由该电子邮件的发信人的信息、该电子邮件的接收邮件服务器的信息,以及所述单位时间的信息依据设定规则所组成。
[0076] 而且,缓存模块104对于由邮件发送模块103生成的变量,根据该变量的变量名称中的单位时间,维护该变量的生命周期;并在该变量的生命周期终止时,删除该变量。
[0077] 例如,若该电子邮件的发信人为a@a.com,收信人为b@b.com,所述单位时间为5分钟,且以“电子邮件的发信人_该电子邮件的接收邮件服务器_单位时间”作为设定规则,则生成的变量的名称为:a@a.com_b.com_5min,变量的值为a@a.com在5分钟内发送邮件到b.com的次数,且该变量的生命周期为5分钟,即该变量生成5分钟后,该变量的生命周期终止,缓存模块104删除该变量。
[0078] S314:邮件发送模块103初始化该变量的值为0,并将该变量存储到缓存模块104中。
[0079] 此外,为了提高系统的自适应能力,邮件发送模块103还可以自适应调整针对电子邮件的发信人与接收邮件服务器所设置的次数上限值,以便于接收邮件服务器的相关参数(单位时间接收邮件次数的上限)发生改变后,可以随之变化的情况自适应调整针对电子邮件的发信人与接收邮件服务器所设置的次数上限值后,继续保证邮件发送的成功率:
[0080] 具体地,邮件发送模块103发送一个电子邮件后,若该电子邮件发送失败,邮件发送模块103获取到该电子邮件发送失败的原因为该电子邮件的发信人单位时间内发送邮件次数超过限制,则将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值,修改为缓存模块104中当前存储的针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数,从而实现一种自适应的机制。
[0081] 本发明的技术方案中,电子邮件发送系统采用了待发送队列和发送队列双队列的方式,将从客户端接收到的电子邮件存入待发送队列,在判断出针对该电子邮件的发信人所统计的单位时间内发送邮件到该电子邮件的接收邮件服务器的次数小于接收邮件服务器的单位时间接收邮件次数的上限后,才将该电子邮件进行发送,否则重新存入到待发送队列中,等待下次发送;这样,尽量避免了因超过接收邮件服务器的单位时间接收邮件次数的上限而导致退信,从而使得电子邮件发送系统具有更高的发送成功率。
[0082] 进一步,本发明的技术方案中,还可以在确定出电子邮件的发信人单位时间内发送邮件的次数超过限制而导致电子邮件发送失败后,自动将针对该电子邮件的发信人与接收邮件服务器所设置的次数上限值进行修改,提高了电子邮件发送系统的自适应能力。
[0083] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
法律信息
- 2016-12-28
- 2013-12-04
实质审查的生效
IPC(主分类): H04L 12/58
专利申请号: 201310303764.3
申请日: 2013.07.18
- 2013-11-06
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-11-07
|
2011-05-05
| | |
2
| |
2002-06-19
|
2000-11-22
| | |
3
| |
2009-05-27
|
2007-11-19
| | |
4
| |
2011-07-13
|
2011-02-25
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |