CN111628924B - 电子邮件的发送方法、系统、存储介质以及电子设备 - Google Patents
电子邮件的发送方法、系统、存储介质以及电子设备 Download PDFInfo
- Publication number
- CN111628924B CN111628924B CN201910151452.2A CN201910151452A CN111628924B CN 111628924 B CN111628924 B CN 111628924B CN 201910151452 A CN201910151452 A CN 201910151452A CN 111628924 B CN111628924 B CN 111628924B
- Authority
- CN
- China
- Prior art keywords
- sending
- content
- content data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/23—Reliability checks, e.g. acknowledgments or fault reporting
Abstract
本发明公开了一种电子邮件的发送方法、系统、存储介质以及电子设备所述发送方法包括:读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息、发送时间以及发送内容;查找至少一个空闲的协程;利用所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端。本发明技术方案可以简化邮件发送的整体过程,有效提高了电子邮件发送的及时性和准确性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种电子邮件的发送方法、系统、存储介质以及电子设备。
背景技术
现在是一个数据为主的时代,随着大数据技术的不断发展和广泛应用,人们也越来越倾向于用数据来表达观点。数据是一种信号,它可以告诉人们已经发生了什么,以及即将要发生什么,因此如何随时随地的获取自己想要的数据就成为了一个非常重要的问题。电子邮件由于具有数据传送及时、收取方便、操作简单等优点,促使越来越多的人将其作为及时获取和交换数据的途径。
现有技术中通常使用多级线程池的逻辑实现电子邮件的发送,但是多级线程池的逻辑实现过程纷繁复杂。通常情况下,从第一级线程池到最后一级线程池是一个顺序且封闭的整体,若在某一个线程池中卡住或出现错误,并不能及时准确的定位出现问题的具体线程池,而且无法正确执行后续的邮件发送过程,也无法自动对该问题线程池的逻辑进行重试,最终导致电子邮件不能及时的发送至邮件接收终端或者给邮件接收终端发出错误的邮件,严重影响了用户体验。
如何准确及时地将电子邮件发送至邮件接收终端是目前亟待解决的问题。
发明内容
本发明实施例要解决的技术问题是为了克服现有技术中采用多级线程池的逻辑发送电子邮件,不能准确及时地将电子邮件发送至邮件接收终端的缺陷,提供一种电子邮件的发送方法、系统、存储介质以及电子设备。
本发明实施例是通过下述技术方案来解决上述技术问题:
一种电子邮件的发送方法,所述发送方法包括:
读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
查找至少一个空闲的协程;
利用所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;
控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端。
较佳地,所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之前还包括:
存储用户预先编写完成的所述邮件配置信息。
较佳地,所述邮件配置信息包括发送时间;
所述预设执行条件包括:
当前时间到达所述电子邮件的所述发送时间。
较佳地,所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之后还包括:
对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id。
较佳地,所述发送内容包括内容id,所述至少一个协程包括任务创建协程、数据获取协程以及邮件发送协程;
所述利用至少一个所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器的步骤具体包括:
利用所述任务创建协程获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
利用所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据;
利用所述任务创建协程接收所述内容数据,并将所述内容数据传递给邮件发送协程;
利用所述邮件发送协程调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器。
较佳地,所述利用数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据的步骤具体包括:利用数据获取协程执行以下步骤:
根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;
根据所述接口信息查找得到所述内容数据。
较佳地,所述内容id的数量为多个;
利用所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据的步骤具体包括:利用所述数据获取协程执行如下步骤:
根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述利用所述任务创建协程接收所述内容数据,并将所述内容数据传递给邮件发送协程的步骤具体包括:利用所述任务创建协程执行如下步骤:
对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;
将所述组装后内容数据发送至所述邮件发送协程。
较佳地,所述发送方法还包括:
检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为是,则生成故障信息;
存储所述故障信息。
较佳地,所述发送方法还包括:
读取所述故障信息;
在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
将所述重试的次数与预设重试次数进行比较;
若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,则将所述故障信息发送至预先绑定的故障信息接收终端。
为解决上述技术问题,本发明实施例还提供了一种电子邮件的发送系统,所述发送系统包括:
邮件配置信息读取模块,用于读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
协程查找模块,用于查找至少一个空闲的协程;
所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;
控制模块,用于控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端。
较佳地,所述发送系统还包括:
邮件配置信息存储模块,用于存储用户预先编写完成的所述邮件配置信息。
较佳地,所述邮件配置信息包括发送时间;
所述预设执行条件包括:
当前时间到达所述电子邮件的所述发送时间。
较佳地,所述发送系统还包括:
邮件标识模块,用于对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id。
较佳地,所述发送内容包括内容id,所述至少一个协程包括任务创建协程、数据获取协程以及邮件发送协程;
所述任务创建协程用于获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
所述数据获取协程用于根据所述内容id查找得到所述应发送邮件的内容数据;
所述任务创建协程还用于接收所述内容数据,并将所述内容数据传递给邮件发送协程;
所述邮件发送协程用于调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器。
较佳地,所述数据获取协程用于根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;所述数据获取协程根据所述接口信息查找得到所述内容数据。
较佳地,所述内容id的数量为多个;
所述数据获取协程用于根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述任务创建协程用于对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;所述任务创建协程用于将所述组装后内容数据发送至所述邮件发送协程。
较佳地,所述发送系统还包括:
故障检测模块,用于检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为是,则调用故障信息生成模块,用于生成故障信息;
故障信息存储模块,用于存储所述故障信息。
较佳地,所述发送系统还包括:
故障信息读取模块,用于读取所述故障信息;
重试模块,用于在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
比较模块,用于将所述重试的次数与预设重试次数进行比较;
故障信息发送模块,若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,所述故障信息发送模块用于将所述故障信息发送至预先绑定的故障信息接收终端。
为解决上述技术问题,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现所述的电子邮件的发送方法的步骤。
为解决上述技术问题,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的电子邮件的发送方法的步骤。
本发明实施例的积极进步效果在于:
本发明实施例的技术方案通过读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;查找至少一个空闲的协程;利用所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端。由此,摒弃了原有的多级线程池嵌套的电子邮件发送策略,采用比线程更细粒度的协程,可以支持纯异步发送电子邮件,不仅邮件发送的执行逻辑全程无锁化,避免了锁阻塞的发生,而且可以简化邮件发送的整体过程,有效提高了电子邮件发送的及时性和准确性。
进一步地,本发明实施例的技术方案可以读取所述电子邮件的所述邮件配置信息,如果当前时间到达所述电子邮件的发送时间,则会将电子邮件及时的发送至接收终端。由此,能够及时检测到满足执行条件的邮件任务,进而快速的将电子邮件发送给需要的用户,提高了用户体验。
进一步地,本发明实施例的技术方案可以通过及时监控电子邮件发送过程中的故障信息,并在预设重试时间内对发生所述故障的执行过程进行一次或多次重试,对于不能通过重试自动回复执行的执行过程,则将对应的故障信息发送至预先绑定的故障接收终端。由此,在电子邮件发送失败时会自动实时的进行任务恢复,可以减少因网络抖动、机器宕机或其他突发原因造成的电子邮件发送失败的问题,而且在整个重试过程中用户全程无感知,不需人工介入,保证了电子邮件发送过程的准确性,进一步提高了用户满意度。
附图说明
图1为本发明实施例1的电子邮件的发送方法的流程图。
图2为本发明实施例1的一种非限制性具体实施方式的流程图。
图3是本发明实施例2的电子邮件的发送方法的流程图。
图4是本发明实施例3的电子邮件的发送方法的流程图。
图5是本发明实施例4的电子邮件的发送系统的结构框图。
图6是本发明实施例6的电子邮件的发送系统的结构框图。
图7是本发明实施例7的实现电子邮件的发送方法的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
一种电子邮件的发送方法,如图1所示,所述发送方法可以包括如下步骤:
步骤S11:读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
步骤S12:查找至少一个空闲的协程;
步骤S13:利用所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;
步骤S14:控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端。
进一步,所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之前还可以包括步骤S10:
存储用户预先编写完成的所述邮件配置信息。
优选地,可以利用Mysql系统(一种关系型数据库管理系统)存储所述邮件配置信息。
具体地,所述邮件配置信息可以包括发送时间;
所述预设执行条件可以包括:
当前时间到达所述电子邮件的所述发送时间。
另外,所述预设执行条件还可以包括其他可以触发电子邮件发送的因素,例如:邮件发送人登录邮件系统、邮件接收人上线、与该邮件相关的另一封邮件的发送过程执行完毕或者接收到发送指令等。本发明实施例对预设执行条件的具体表现形式不作限制。
本实施例中,可以利用Flink(一种分布式流处理开源框架)来扫描Mysql系统中各个电子邮件的发送时间,将满足预设执行条件的所述电子邮件作为应发送邮件。
请同时参考图1、图2。进一步地,所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之后还可以包括如下步骤:
步骤S15:对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id。
具体地,所述邮件任务id可以是数字序列、字母序列或者数字字母序列的组合。
优选地,所述发送内容可以包括内容id,所述至少一个协程包括任务创建协程、数据获取协程以及邮件发送协程;
在这种情况下,所述步骤S12可以具体包括如下步骤S121:
查找空闲的任务创建协程、数据获取协程以及邮件发送协程。
所述步骤S13具体可以包括:
步骤S131:利用所述任务创建协程获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
步骤S132:利用所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据;
步骤S133:利用所述任务创建协程接收所述内容数据,并将所述内容数据传递给邮件发送协程;
步骤S134:利用所述邮件发送协程调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器。
其中,所述任务创建协程、数据获取协程以及邮件发送协程可以由Akka(一种用Scala(编程语言)编写的库)系统创建,所述Akka系统可以用于简化编写容错的、高可伸缩性的Java(一门面向对象编程语言)的Actor(一种计算机模型)应用,各个Actor之间完全独立,且其所有的消息发送和接收操作都可以实现异步并行。
本实施例中,所述邮件服务器是用于执行发送邮件操作的机器集群,所述机器集群中包括的服务器的数量可以根据具体需求而进行设置,本实施例对此不作具体限制。
进一步地,所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容具体可以包括:利用数据获取协程执行以下步骤:根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;根据所述接口信息查找得到所述内容数据。
具体地,所述内容id可以是数字序列、字母序列或者数字字母序列的组合。
本实施例中,所述内容数据可以是报表数据,相应的,所述内容id可以是报表id。
另外,邮件发送过程中产生的过程日志可以存储在Hbase(一种分布式的、面向列的开源数据库)中,以便于后续在有需要时对发送邮件的过程进行追溯。
本实施例在具体实施时,摒弃了原有的多级线程池嵌套的电子邮件发送策略,采用比线程更细粒度的协程,可以支持纯异步发送电子邮件,不仅邮件发送的执行逻辑全程无锁化,避免了锁阻塞的发生,而且可以简化邮件发送的整体过程,有效提高了电子邮件发送的及时性和准确性。
实施例2
一种电子邮件的发送方法,如图3所示,本实施例中的发送方法是在实施例1基础上的改进。
进一步地,所述内容id的数量可以为多个;
所述步骤S132具体可以包括:利用所述数据获取协程执行如下步骤:
步骤S1321:根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述步骤S133可以具体包括:利用所述任务创建协程执行如下步骤:
步骤S1331:对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;
步骤S1332:将所述组装后内容数据发送至所述邮件发送协程。
在一个非限制性的具体应用场景中,例如:邮件发送者需要发送报表A和报表B给邮件接收终端,其中报表A的报表id为123abc,报表B的报表id为456asd。
邮件发送者建立新邮件,并设置邮件配置信息,所述邮件配置信息包括电子邮件的邮件接收终端的地址、邮件发送时间以及发送内容,其中,发送内容包括:在文件选择框中填写的123abc以及456asd这两个id序列。
邮件发送者新建立的电子邮件被存储在Mysql系统中,并被设置一个对应的邮件任务id,该邮件任务id唯一标识该电子邮件。
接下来,Flink扫描Mysql系统中的电子邮件的发送时间,将满足发送时间的电子邮件发送至任务创建协程,所述任务创建协程获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中拆分出两个报表id,即123abc以及456asd。
任务创建协程可以将两个报表id分别传递给两个数据获取协程,每一个数据获取协程根据接收到的一个报表id查找相应报表数据的配置信息,所述报表数据的配置信息包括获取所述报表数据的接口信息以及报表的类型(文字或图片),继而所述数据获取协程根据所述接口信息查找得到相应的报表数据。
若123abc对应的报表数据是文字类型,则数据获取协程直接将获取的文字类型的报表数据传送给任务创建协程;若456asd对应的报表数据是图片类型,则利用PhantomJs(一种浏览器)访问相应报表并进行截图,将截图传送给任务创建协程。
任务创建协程对获取的两个报表id对应的报表数据(文字以及图片)进行组装,并将组装后的报表数据传递至邮件发送协程,接下来,可以利用所述邮件发送协程调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器,所述邮件服务器将电子邮件发送至邮件接收终端,至此,电子邮件发送结束。
本实施例在具体实施时,可以对获取的多组内容数据进行预处理,保证了邮件接收终端能够准确的接收到所需的邮件内容。
实施例3
一种电子邮件的发送方法,如图4所示,本实施例中的发送方法是在实施例1或实施例2基础上的改进。
进一步地,所述发送方法还可以包括:
步骤S21:检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为否,则继续执行步骤S21,以对邮件发送过程进行实时监控。
若检测结果为是,则执行步骤S22:生成故障信息;
步骤S23:存储所述故障信息。
进一步地,所述发送方法还可以包括:
步骤S24:读取所述故障信息;
步骤S25:在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
步骤S26:将所述重试的次数与预设重试次数进行比较;
若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,则执行步骤S27:将所述故障信息发送至预先绑定的故障信息接收终端。
若在预设重试次数之内,所述发送过程重试成功,则执行步骤S21,以对邮件发送过程进行实时监控。
所述预设重试次数可以根据具体应用场合进行设置,本实施例对此不作具体限制。
具体地,所述故障信息接收终端可以为任意型号的PC端(个人计算机)或移动终端(例如:手机,ipad(平板电脑))等,本实施例对此不做限制。
本实施例中,可以利用kafka(分布式消息订阅发布系统)来存储邮件发送过程中的异常信息,Flink系统可以流式消费kafka中的异常信息数据并在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试,若重试成功,则执行后续的邮件发送过程,若重试失败,则可以向故障信息接收终端发送故障信息,从而方便研发和运营人员及时进行处理。
本实施例在具体实施时,在电子邮件发送失败时自动实时的进行任务恢复,可以减少因网络抖动、机器宕机或其他突发原因造成的电子邮件发送失败的问题,而且在整个重试过程中用户全程无感知,不需人工介入,保证了电子邮件发送过程的准确性,进一步提高了用户满意度。
实施例4
一种电子邮件的发送系统,如图5所示,所述发送系统1可以包括:
邮件配置信息读取模块3,用于读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
协程查找模块4,用于查找至少一个空闲的协程;
所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器6;
控制模块5,用于控制所述邮件服务器6将所述邮件传递至所述邮件接收终端。
进一步地,所述发送系统1还可以包括:
邮件配置信息存储模块2,用于存储用户预先编写完成的所述邮件配置信息。
具体地,所述邮件配置信息可以包括发送时间;
所述预设执行条件可以包括:
当前时间到达所述电子邮件的所述发送时间。
进一步地,所述发送系统1还可以包括:
邮件标识模块7,用于对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id。
进一步地,所述发送内容可以包括内容id,所述至少一个协程包括任务创建协程8、数据获取协程9以及邮件发送协程10;
所述任务创建协程8用于获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
所述数据获取协程9用于根据所述内容id查找得到所述应发送邮件的内容数据;
所述任务创建协程8还用于接收所述内容数据,并将所述内容数据传递给邮件发送协程10;
所述邮件发送协程10用于调用邮件服务器6的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器6。
进一步地,所述数据获取协程9用于根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;所述数据获取协程9根据所述接口信息查找得到所述内容数据。
关于实施例4中的所述发送系统的工作原理、工作方式的更多内容,可以参照实施例1中的关于发送方法的相关描述,这里不再赘述。
本实施例中的发送系统在运行时,摒弃了原有的多级线程池嵌套的电子邮件发送策略,采用比线程更细粒度的协程,可以支持纯异步发送电子邮件,不仅邮件发送的执行逻辑全程无锁化,避免了锁阻塞的发生,而且可以简化邮件发送的整体过程,有效提高了电子邮件发送的及时性和准确性。
实施例5
一种电子邮件的发送系统,本实施例中的发送系统是在实施例4基础上的改进。
进一步地,所述内容id的数量为多个;
所述数据获取协程9用于根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述任务创建协程8用于对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;所述任务创建协程8用于将所述组装后内容数据发送至所述邮件发送协程10。
关于实施例5中的所述发送系统的工作原理、工作方式的更多内容,可以参照实施例2中的关于发送方法的相关描述,这里不再赘述。
本实施例中的发送系统在具体运行时,可以对获取的多组内容数据进行预处理,保证了邮件接收终端能够准确的接收到所需的邮件内容。
实施例6
一种电子邮件的发送系统,如图6所示,本实施例中的发送系统是在实施例4或实施例5的基础上的改进。
进一步地,所述发送系统1还可以包括:
故障检测模块11,用于检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为是,则调用故障信息生成模块12,用于生成故障信息;
故障信息存储模块13,用于存储所述故障信息。
进一步地,所述发送系统还可以包括:
故障信息读取模块14,用于读取所述故障信息;
重试模块15,用于在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
比较模块16,用于将所述重试的次数与预设重试次数进行比较;
故障信息发送模块17,若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,所述故障信息发送模块17用于将所述故障信息发送至预先绑定的故障信息接收终端。
关于实施例6中的所述发送系统的工作原理、工作方式的更多内容,可以参照实施例3中的关于发送方法的相关描述,这里不再赘述。
本实施例中的发送系统在具体运行时,在电子邮件发送失败时自动实时的进行任务恢复,可以减少因网络抖动、机器宕机或其他突发原因造成的电子邮件发送失败的问题,而且在整个重试过程中用户全程无感知,不需人工介入,保证了电子邮件发送过程的准确性,进一步提高了用户满意度。
实施例7
图7为本发明实施例7提供的一种电子设备的结构示意图。所述电子设备可以包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现实施例1至3中任意一实施例中的电子邮件的发送方法的步骤。
可以理解的是,图7所示的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备18可以以通用计算设备的形式表现,例如:其可以为服务器设备。电子设备18的组件可以包括但不限于:上述至少一个处理器19、上述至少一个存储器20、连接不同系统组件(包括存储器20和处理器19)的总线21。
所述总线21可以包括数据总线、地址总线和控制总线。
所述存储器20可以包括易失性存储器,例如随机存取存储器(RAM)201和/或高速缓存存储器202,还可以进一步包括只读存储器(ROM)203。
所述存储器20还可以包括具有一组(至少一个)程序模块204的程序工具205(或实用工具),这样的程序模块204包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
所述处理器19通过运行存储在所述存储器20中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1-3任一实施例所提供的电子邮件的发送方法的步骤。
所述电子设备18也可以与一个或多个外部设备22(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口23进行。并且,模型生成的电子设备18还可以通过网络适配器24与一个或者多个网络(例如局域网LAN,广域网WAN和/或公共网络)通信。
如图7所示,网络适配器24可以通过总线21与模型生成的电子设备18的其它模块通信。本领域技术人员应当明白,尽管图中未示出,可以结合模型生成的电子设备18使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
需要说明的是,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例8
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现实施例1至3中任意一实施例中的电子邮件的发送方法的步骤。
其中,计算机可读存储介质可以采用的更具体方式可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现实施例1至3中任意一实施例中的电子邮件的发送方法的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (16)
1.一种电子邮件的发送方法,其特征在于,所述发送方法包括:
读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
查找至少一个空闲的协程;
利用所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;
控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端;
所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之后还包括:
对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id;
所述发送内容包括内容id,至少一个所述协程包括任务创建协程、数据获取协程以及邮件发送协程;
利用至少一个所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器的步骤具体包括:
利用所述任务创建协程获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
利用所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据;
利用所述任务创建协程接收所述内容数据,并将所述内容数据传递给邮件发送协程;
利用所述邮件发送协程调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器。
2.如权利要求1所述的电子邮件的发送方法,其特征在于,所述读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件的步骤之前还包括:
存储用户预先编写完成的所述邮件配置信息。
3.如权利要求1所述的电子邮件的发送方法,其特征在于,所述邮件配置信息包括发送时间;
所述预设执行条件包括:当前时间到达所述电子邮件的所述发送时间。
4.如权利要求1所述的电子邮件的发送方法,其特征在于,所述利用数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据的步骤具体包括:利用数据获取协程执行以下步骤:
根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;
根据所述接口信息查找得到所述内容数据。
5.如权利要求4所述的电子邮件的发送方法,其特征在于,所述内容id的数量为多个;
利用所述数据获取协程根据所述内容id查找得到所述应发送邮件的内容数据的步骤具体包括:利用所述数据获取协程执行如下步骤:
根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述利用所述任务创建协程接收所述内容数据,并将所述内容数据传递给邮件发送协程的步骤具体包括:利用所述任务创建协程执行如下步骤:
对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;
将所述组装后内容数据发送至所述邮件发送协程。
6.如权利要求1-3任一项所述的电子邮件的发送方法,其特征在于,所述发送方法还包括:
检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为是,则生成故障信息;
存储所述故障信息。
7.如权利要求6所述的电子邮件的发送方法,其特征在于,所述发送方法还包括:
读取所述故障信息;
在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
将所述重试的次数与预设重试次数进行比较;
若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,则将所述故障信息发送至预先绑定的故障信息接收终端。
8.一种电子邮件的发送系统,其特征在于,所述发送系统包括:
邮件配置信息读取模块,用于读取所述电子邮件的邮件配置信息,将满足预设执行条件的所述电子邮件作为应发送邮件,所述邮件配置信息包括所述电子邮件的邮件接收终端的信息以及发送内容;
协程查找模块,用于查找至少一个空闲的协程;
所述协程执行所述应发送邮件的传递,以将所述应发送邮件传递至邮件服务器;
控制模块,用于控制所述邮件服务器将所述应发送邮件传递至所述邮件接收终端;
所述发送系统还包括:
邮件标识模块,用于对所述应发送邮件进行标识,以得到所述应发送邮件的邮件任务id;
所述发送内容包括内容id,至少一个所述协程包括任务创建协程、数据获取协程以及邮件发送协程;
所述任务创建协程用于获取所述邮件任务id,根据所述邮件任务id查找获取所述邮件配置信息,从所述邮件配置信息中查找获取所述内容id;
所述数据获取协程用于根据所述内容id查找得到所述应发送邮件的内容数据;
所述任务创建协程还用于接收所述内容数据,并将所述内容数据传递给邮件发送协程;
所述邮件发送协程用于调用邮件服务器的接口,以将所述内容数据以及所述邮件接收终端的信息发送至所述邮件服务器。
9.如权利要求8所述的电子邮件的发送系统,其特征在于,所述发送系统还包括:
邮件配置信息存储模块,用于存储用户预先编写完成的所述邮件配置信息。
10.如权利要求8所述的电子邮件的发送系统,其特征在于,所述邮件配置信息包括发送时间;
所述预设执行条件包括:
当前时间到达所述电子邮件的所述发送时间。
11.如权利要求8所述的电子邮件的发送系统,其特征在于,所述数据获取协程用于根据所述内容id查找所述内容数据的配置信息,所述内容数据的配置信息包括获取所述内容数据的接口信息;所述数据获取协程根据所述接口信息查找得到所述内容数据。
12.如权利要求8所述的电子邮件的发送系统,其特征在于,所述内容id的数量为多个;
所述数据获取协程用于根据多个所述内容id分别查找得到多组所述内容数据,其中,每个所述内容id分别对应一组所述内容数据;
所述任务创建协程用于对多组所述内容数据进行组装,以得到组装后内容数据,其中,所述组装包括对多组所述内容数据按照预设规则进行排列;所述任务创建协程用于将所述组装后内容数据发送至所述邮件发送协程。
13.如权利要求8-10任一项所述的电子邮件的发送系统,其特征在于,所述发送系统还包括:
故障检测模块,用于检测所述应发送邮件的发送过程是否出现故障,其中,所述故障包括以下一种或多种:所述邮件配置信息读取失败、所述内容id查找失败、所述内容数据获取失败;
若检测结果为是,则调用故障信息生成模块,用于生成故障信息;
故障信息存储模块,用于存储所述故障信息。
14.如权利要求13所述的电子邮件的发送系统,其特征在于,所述发送系统还包括:
故障信息读取模块,用于读取所述故障信息;
重试模块,用于在预设重试时间内控制发生所述故障的所述发送过程进行一次或多次重试;
比较模块,用于将所述重试的次数与预设重试次数进行比较;
故障信息发送模块,若所述重试的次数大于所述预设重试次数,且所述故障仍然存在,所述故障信息发送模块用于将所述故障信息发送至预先绑定的故障信息接收终端。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行计算机程序时实现权利要求1-7任一项所述的电子邮件的发送方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的电子邮件的发送方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151452.2A CN111628924B (zh) | 2019-02-28 | 2019-02-28 | 电子邮件的发送方法、系统、存储介质以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151452.2A CN111628924B (zh) | 2019-02-28 | 2019-02-28 | 电子邮件的发送方法、系统、存储介质以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111628924A CN111628924A (zh) | 2020-09-04 |
CN111628924B true CN111628924B (zh) | 2023-05-12 |
Family
ID=72271633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910151452.2A Active CN111628924B (zh) | 2019-02-28 | 2019-02-28 | 电子邮件的发送方法、系统、存储介质以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111628924B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113794624B (zh) * | 2021-09-07 | 2023-04-07 | 广州华多网络科技有限公司 | 即时消息传输控制方法、装置、计算机设备及存储介质 |
CN114363284B (zh) * | 2021-12-23 | 2024-03-19 | 深圳市六度人和科技有限公司 | 一种基于移动端的邮件批量发送方法、装置、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551051A (en) * | 1994-09-20 | 1996-08-27 | Motorola, Inc. | Isolated multiprocessing system having tracking circuit for verifyng only that the processor is executing set of entry instructions upon initiation of the system controller program |
CN109039870A (zh) * | 2018-08-20 | 2018-12-18 | 平安科技(深圳)有限公司 | 邮件发送方法、系统、计算机设备和存储介质 |
CN109245988A (zh) * | 2018-06-05 | 2019-01-18 | 平安科技(深圳)有限公司 | 监控邮件自动发送方法、系统、计算机设备和存储介质 |
-
2019
- 2019-02-28 CN CN201910151452.2A patent/CN111628924B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551051A (en) * | 1994-09-20 | 1996-08-27 | Motorola, Inc. | Isolated multiprocessing system having tracking circuit for verifyng only that the processor is executing set of entry instructions upon initiation of the system controller program |
CN109245988A (zh) * | 2018-06-05 | 2019-01-18 | 平安科技(深圳)有限公司 | 监控邮件自动发送方法、系统、计算机设备和存储介质 |
CN109039870A (zh) * | 2018-08-20 | 2018-12-18 | 平安科技(深圳)有限公司 | 邮件发送方法、系统、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
《ISO/IEC/IEEE International Standard - Systems and software engineering -- Vocabulary》;IEEE;《IEEE》;20101231;全文 * |
《企业级邮件处理系统邮件工作流的设计与实现》;张启华;《中国优秀硕士学位论文全文数据库》;20181215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111628924A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522287B (zh) | 分布式文件存储集群的监控方法、系统、设备及介质 | |
CN110516971B (zh) | 异常检测的方法、装置、介质和计算设备 | |
US8516112B2 (en) | Performance monitoring of a computer resource | |
US11630762B2 (en) | Method and apparatus for testing map service | |
WO2018234741A1 (en) | SYSTEMS AND METHODS FOR INTELLIGENCE OF INDUSTRIAL ASSETS BY DISTRIBUTED SYSTEMIC ANTICIPATION | |
US20210224676A1 (en) | Systems and methods for distributed incident classification and routing | |
CN104951458A (zh) | 基于语义识别的帮助处理方法及设备 | |
CN111190888A (zh) | 一种管理图数据库集群的方法和装置 | |
Jeong et al. | Anomaly teletraffic intrusion detection systems on hadoop-based platforms: A survey of some problems and solutions | |
CN102082781A (zh) | 服务器管理系统及其方法 | |
US20230129123A1 (en) | Monitoring and Management System for Automatically Generating an Issue Prediction for a Trouble Ticket | |
CN111628924B (zh) | 电子邮件的发送方法、系统、存储介质以及电子设备 | |
CN111352806A (zh) | 日志数据监控方法及装置 | |
CN111327685A (zh) | 分布式存储系统数据处理方法、装置及设备和存储介质 | |
CN113127307A (zh) | 溯源请求的处理方法、相关装置、系统及存储介质 | |
CN105320711B (zh) | 巨量数据存取方法以及使用该方法的系统 | |
WO2023224764A1 (en) | Multi-modality root cause localization for cloud computing systems | |
CN111130882A (zh) | 网络设备的监控系统及方法 | |
CN114756301A (zh) | 日志处理方法、装置和系统 | |
CN111352739B (zh) | 一种计算机大数据的批处理方法 | |
US20240144198A1 (en) | Machine Learning-based Knowledge Management for Incident Response | |
US11874821B2 (en) | Block aggregation for shared streams | |
US11762809B2 (en) | Scalable subscriptions for virtual collaborative workspaces | |
US10686645B1 (en) | Scalable subscriptions for virtual collaborative workspaces | |
CN201947287U (zh) | 一种磁带数据恢复设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |