电子邮件发送方法和装置与流程

文档序号:11693131阅读:369来源:国知局
电子邮件发送方法和装置与流程

本发明涉及电子邮件传输技术,尤其涉及一种超时邮件发送方法和装置。



背景技术:

对于类似于ops这样的需要大批量电子邮件发送的应用系统,没有一个统一的邮件管理模块,各个开发者之间都在需要邮件时都需要各自开发自己的邮件发送功能。

当前应用系统中,对于需要邮件发送的功能,大多是直接在程序中直接调用邮件发送接口,实现邮件的发送功能,从而实现邮件发送与应用系统操作的同步执行。目前,这种现有技术存在以下缺陷:

当邮件发送失败时,由于,电子邮件的接收者不能收到电子邮件,而发送者可能无法获知,发送者仍会等待接收者对电子邮件的回复。显然,这种方法不能有效地解决邮件超时提醒的问题。

而且,现有技术中也一直没有很好的方案实现邮件发送之后周期性提醒的功能。例如:如果采用ops系统来向审批人发送电子邮件,申请购买一台服务器,如果在3个工作日之内,还没有审批,则需要给审批发邮件,提醒审批人进行审批。在这种应用场景中,如果采用原有的技术:邮件发送与系统操作的同步执行的话,那么“三天后审批人没有操作的提醒”就无法实现。



技术实现要素:

针对现有技术的缺陷,本发明的目的是提供一种能够对超时邮件进行异步发送的方法和装置。

本发明提供了一种电子邮件发送方法,所述方法包括:步骤110,获 取邮件队列中邮件记录;步骤120,读取邮件记录中的发送时间和邮件发送任务状态;步骤130,当发送时间超过设定时间且邮件发送任务状态为未发送,则重新发送该邮件记录所对应的邮件。

优选地,在步骤130中:如果发送时间大于或等于超时设定时间,则将所述邮件列入超时记录列表,定时扫描超时记录列表,对超时记录列表中邮件发送任务状态为未发送的记录调用回调函数,利用所述回调函数重新发送该邮件记录所对应的邮件。

优选地,还包括步骤140:重新发送该邮件记录所对应的邮件成功之后,重新设置邮件发送任务状态。

优选地,步骤140为:重新发送该邮件记录所对应的邮件之后,在web界面上通过手工设置重新设置邮件发送任务状态。

本发明还提供了一种邮件发送装置,所述装置包括:邮件记录获取模块,用于获取邮件队列中邮件记录;发送状态读取模块,用于读取邮件记录中的发送时间和邮件发送任务状态;邮件重发模块,用于当发送时间超过设定时间且邮件发送任务状态为未发送,则重新发送该邮件记录所对应的邮件。

优选地,邮件重发模块包括回调单元,所述回调单元对超时记录列表中邮件发送任务状态为未发送的记录,则执行记录中的回调函数,以便利用回调函数重新发送该邮件记录所对应的邮件。

优选地,该装置还包括任务状态设置模块,任务状态设置模块用于在重新发送该邮件记录所对应的邮件成功之后重新设置邮件发送任务状态。

优选地,任务状态设置模块包括手工设置单元,重新发送该邮件记录所对应的邮件成功之后,通过所述手工设置单元在web界面上通过手工设置重新设置邮件发送任务状态。

相对于现有技术,本发明提供的邮件发送方法和装置,有以下有益效果:能够实现异步发送邮件,减少系统操作过程中用户等待时间;降低了需要邮件功能的应用系统的开发复杂度。

在采用web界面可视化管理的优选实施方式中,管理员可以更方便 地进行邮件管理。

附图说明

图1是本发明电子邮件发送方法的原理流程图;

图2是本发明电子邮件发送方法的一种具体实施方式的流程图;

图3是本发明一种具体实施方式的电子邮件发送装置的结构框图。

具体实施方式

采用本发明的技术方案,通过对所有邮件的发送时间进行检测,对发送时间超过设定时间的邮件进行重新发送,从而降低了需要邮件功能的应用系统的开发复杂度,减少了系统操作过程中用户的等待时间,提高了电子邮件的处理效率。

图1是本发明超时邮件发送方法的原理流程图。如图所示,所述方法包括以下步骤:

步骤110,获取邮件队列中邮件记录。邮件队列是在应用系统中的邮件发送模块的邮件发送任务序列。

对于需要邮件发送的应用系统,例如ops系统,在邮件发送时在邮件队列的列表中插入一条邮件记录。邮件记录中可以包括:邮件标题、邮件内容、发送人、接收人、抄送人、发送时间等相关信息。邮件记录以数据库中的相应数据记录的形式存储在数据库中,邮件队列中邮件记录的获取可以通过数据库软件中的操作来实现,例如,例如读取、检索、定位等等。

步骤120,读取邮件记录中的发送时间和邮件发送任务状态。

邮件记录中的发送时间和邮件发送任务状态的读取可以通过脚本程序实现,所述脚本程序可以通过例如asp脚本、java脚本通过程序实现,所述脚本程序根据预定时间扫描邮件列表,所述扫描过程是对所述邮件列表中逐项记录中的发送任务状态、发送时间进行读取,读取发送时间等参数的读取。扫描周期是指两次扫描的间隔,所述扫描周期可以根据项目需求定义。

步骤130,当发送时间超过设定时间且邮件发送任务状态为未发送,则重新发送该邮件记录所对应的邮件。若发送时间未超过设定时间,则继续发送邮件,若当发送时间超过设定时间且邮件发送任务状态为已发送,则表示电子邮件已延迟发送成功。

如果发送时间超过设定时间且发送任务状态为未发送,则表明之前的发送未能成功,需要重新发送该邮件记录所对应的邮件。所述重新发送的过程是通过应用系统中的邮件发送模块实现的,所述邮件发送模块可以由各种适合的软件模块实现,例如smtp模块。

在一种优选实施方式中,步骤130包括:对发送时间进行检测,如果发送时间大于或等于超时设定时间,则将所述邮件列入超时记录列表。例如,一个电子邮件的发送时间是2分钟,而设定时间是1分钟,则表明当前时间大于超时设定时间;如果发送任务状态为“未发送”、“待发送”或类似标识,则表明发送任务状态为未发送;定时扫描超时记录列表;对超时记录列表中邮件发送任务状态为未发送的记录执行回调函数,利用回调函数重新创建并且发送该邮件记录所对应的邮件。

其中,回调函数是通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就可以说这是回调函数。回调函数的实现机制是:定义一个回调函数;提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;当特定事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。回调函数不是由该函数的实现方直接调用,而是在特定事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。例如,在a程序中设置一个计时器,每到一定时间,a程序会得到相应的通知,但通知机制的实现者对a程序一无所知,那么就需一个具有特定原型的函数指针进行回调,通知a程序事件已经发生,具体地,api使用一个回调函数settimer()来通知计时器。

使用回调函数,可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。因此使得编程更加方便、高效。

在本实施方式中,实现电子邮件的重新发送,可以设定一个回调函数,该回调函数用于对超时列表中电子邮件的发送任务状态进行判断,当所述发送任务状态为未发送,对该条记录进行通知,以便重新发送该条记录对应的电子邮件。

在一种优选实施方式中,上述方法还包括步骤140:重新发送该邮件记录所对应的邮件成功之后,重新设置邮件发送任务状态。具体地,重新发送该邮件记录所对应的邮件之后,在预定时间内检测邮件是否发送成功,例如,在新发送该邮件记录所对应的邮件之后的10s后检测电子邮件是否发送,如果成功,则邮件发送任务状态设置为“已发送”。

在另一种优选实施方式中,步骤140为:重新发送该邮件记录所对应的邮件之后,在web界面上通过手工设置重新设置邮件发送任务状态。在web界面上通过手工设置的方式可以更加便于操作者根据邮件发送状态来灵活调整邮件发送任务状态。对于例如ops的应用系统,为管理人员提供了可视化管理邮件队列的方式。在具体实施例中,可以通过web界面上将邮件发送任务状态从“已发送”更改为“待发送”;或者将邮件发送任务状态从“待发送”改成“已发送”。

如图2所示,在一种具体实施方式中,电子邮件发送方法包括以下步骤:

发送电子邮件后决定是否开始计时,如果不计时,则不启动后续重发邮件机制,如果决定计时,则继续后续步骤;

当电子邮件的发送出现超时的情况,则针对该电子邮件创建超时记录,并将超时记录存入超时列表;

通过脚本扫描超时列表;

对于超时列表中的电子邮件,利用回调函数重新创建并且发送电子邮件,对于重新发送的电子邮件,还可以继续决定是否计时,以便确定重发的电子邮件是否超时,超时的重发电子邮件仍可记录进超时列表;

通过脚本获取邮件队列中邮件记录进行扫描,如果电子邮件被成功地重新发送,则该方法结束。

相应地,本发明还提供了一种邮件发送装置200,如图3所示,所述 装置包括:邮件记录获取模块210、发送状态读取模块220、邮件重发模块230。其中:

邮件记录获取模块210用于获取邮件队列中邮件记录。对于需要邮件发送的应用系统,例如ops系统,在邮件发送时在邮件队列的列表中插入一条邮件记录。邮件记录中可以包括:邮件标题、邮件内容、发送人、接收人、抄送人、发送时间等相关信息。邮件记录以数据库中的相应数据记录的形式存储在数据库中,邮件队列中邮件记录的获取可以通过数据库软件中的相应软件模块来实现,例如,例如读取模块、检索模块、定位模块等等。

发送状态读取模块220用于读取邮件记录中的发送时间和邮件发送任务状态。发送状态读取模块220可以通过脚本程序实现,所述脚本程序可以通过例如asp脚本、java脚本通过程序实现,所述脚本程序根据预定时间扫描邮件列表,所述扫描过程是对所述邮件列表中逐项记录中的发送任务状态、发送时间进行读取,读取可以根据预定的扫描周期重复进行。

邮件重发模块230用于当发送时间超过设定时间且邮件发送任务状态为未发送,则重新发送该邮件记录所对应的邮件。如果发送时间超过设定时间且发送任务状态为未发送,则表明之前的发送未能成功,需要重新发送该邮件记录所对应的邮件。邮件重发模块230可以通过应用系统中的邮件发送模块实现,例如可以由各种适合的软件模块实现,例如smtp模块。

在一种优选实施方式中,邮件重发模块包括回调单元240,所述回调单元对超时记录列表中邮件发送任务状态为未发送的记录,则执行记录中的回调函数,以便利用回调函数重新发送该邮件记录所对应的邮件。

邮件发送装置200还可以包括任务状态设置模块250,任务状态设置模块用于在重新发送该邮件记录所对应的邮件成功之后重新设置邮件发送任务状态。在一种优选实施方式中,任务状态设置模块250包括手工设置单元260,重新发送该邮件记录所对应的邮件成功之后,通过所述手工设置单元在web界面上通过手工设置重新设置邮件发送任务状态。手 工设置单元260可以是能够通过web页面的人机接口实现,例如可以是数据库提供的操作接口,所述操作接口的形式可以是对话框、下拉菜单等等。优选地,在对发送任务状态进行重新设置后,还可以对超时列表进行更新,例如:在重新发送邮件成功后,不仅将发送任务状态修改为已发送,而且将该电子邮件对应的记录从超时记录列表中删除。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1