在做毕业设计时,遇到了需要定时发送邮件的功能,这里记录一下
下面时发送邮件的具体类
SendMailTool类是我写的用于传递参数的类,SendTool工具类
具体的思路就是调用dao层去返回需要发送邮件的邮件集合和需要发送的内容,很简单。
因为后面写的setRecipients()方法的参数只能传递InternetAddress类型的对象,或者InternetAddress[]类型的参数,所以传递进来的Object[]需要进行转换
因为做的是定时发送邮件的功能,首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)
如: 每隔一个小时执行任务 timer.schedule(TimerTask, 0, 60 * 60 * 1000);
schedule方法的第一个参数是需要执行的任务,此类的类型为java.util.TimerTask,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒
由于我们希望当Web工程启动时,定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器, 让其在工程启动时自动加载运行,存活期为整个Web工程生命期.
要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,以下是实例:
web.xml的配置和pom文件的配置,如果不是maven项目,需要下载mail.jar和activation.jar.
参考的文章:https://blog.csdn.net/xuemengrui12/article/details/78530594?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1330144.10665.16180593189976731&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control