使用QuartZ定时发送邮件

QuartZ简介

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz是一个完全由java编写的开源作业调度框架。

核心API

执行流程

cron表达式

定时表达式共7部分组成,第7部分是可选项,定义时每部分使用空格分隔。
参考官方文档,也可以借助在线生成工具自动生成。
使用QuartZ定时发送邮件_第1张图片

定时发送邮件

pom.xml中引入依赖

    
    
        org.springframework
        spring-context-support
        ${spring.version}
    
    
    
        org.quartz-scheduler
        quartz
        2.2.1
    
    
        org.quartz-scheduler
        quartz-jobs
        2.2.1
    
    
    
        javax.mail
        mail
        1.4
    

自定义工具类

        /**
         * 定时发送邮箱工具类
         */
        public class MailJob {

            //注入工单service
            @Autowired
            private WorkBillService workBillService;

            private String username;
            private String password;
            private String smtpServer;

            public String getUsername() {
                return username;
            }
            public void setUsername(String username) {
                this.username = username;
            }
            public String getPassword() {
                return password;
            }
            public void setPassword(String password) {
                this.password = password;
            }
            public String getSmtpServer() {
                return smtpServer;
            }
            public void setSmtpServer(String smtpServer) {
                this.smtpServer = smtpServer;
            }

            /**
             * 执行发送邮件任务
             */
            public void execute(){

                try {
                    //查询工单类型为新单的所有工单
                    List workBillList = workBillService.findNewWorkBills();
                    if (null != workBillList && workBillList.size() > 0) {
                        final Properties mailProps = new Properties();
                        mailProps.put("mail.smtp.host", this.getSmtpServer());
                        mailProps.put("mail.smtp.auth", "true");
                        mailProps.put("mail.username", this.getUsername());
                        mailProps.put("mail.password", this.getPassword());

                        //构建授权信息,用于进行SMTP进行身份验证
                        Authenticator authenticator = new Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                //用户名、密码
                                String userName = mailProps.getProperty("mail.username");
                                String password = mailProps.getProperty("mail.password");

                                return new PasswordAuthentication(userName, password);
                            }
                        };

                        //使用环境属性和授权信息,创建邮件会话
                        Session mailSession = Session.getInstance(mailProps, authenticator);

                        for (WorkBill workBill : workBillList) {
                            //创建邮件消息
                            MimeMessage message = new MimeMessage(mailSession);
                            //设置发件人
                            InternetAddress from = new InternetAddress(mailProps.getProperty("mail.username"));
                            message.setFrom(from);

                            //设置收件人
                            InternetAddress to = new InternetAddress(workBill.getStaff().getEmail());
                            message.setRecipient(RecipientType.TO, to);

                            //设置邮件标题
                            message.setSubject("系统邮件,新单通知");

                            //设置邮件的内容体
                            message.setContent(workBill.toString(),"text/html;charset=UTF-8");
                            //发送邮件
                            Transport.send(message);
                        }
                    }
                } catch (AddressException e) {
                    e.printStackTrace();
                } catch (MessagingException e) {
                    e.printStackTrace();
                }
            }
        }

配置任务类

    
    
        
        
        
        
    

在spring容器中配置任务描述类

    
    
        
        
    

在spring容器中配置触发器

    
    
        
        
        
        
        
    

在spring容器中配置调度容器工厂

    
    
        
            
                
            
        
    

你可能感兴趣的:(框架/工具)