`

spring和quartz进行定时邮件发送 收集

阅读更多
关于Spring的邮件发送的功能演示:
参见:
     http://java123.blog.51cto.com/397472/81237
    http://wmswu.iteye.com/blog/200412
    http://blog.sina.com.cn/s/blog_612205540100ehlh.html
(我把程序中一些敏感的地方替换成了其他的文字,直接调试肯定不行,只是给大家一个参考)
  需要用到的jar包是
  spring-context.jar
  mail.jar
  spring-core.jar
  activation.jar
  commons-logging.jar
   quartz-all-1.6.0.jar (定时器所需要的包)  这些是程序必须要用到的包。

1:简单邮件

简单邮件中是可以实现邮件群发的功能的,区别是收件人可以是一个数组。
package com;     
import org.springframework.mail.SimpleMailMessage;     
import org.springframework.mail.javamail.JavaMailSenderImpl;     
/**  
 * 本类测试简单邮件  
 *   
 * @author sunny  
 *   
 */     
public class SingleMailSend {     
    public static void main(String args[]){     
        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();     
//      设定mail server   
        senderImpl.setHost("192.168.1.1");     
        senderImpl.setUsername("username");     
        senderImpl.setPassword("password");     
  
  
//      建立邮件消息   
        SimpleMailMessage mailMessage = new SimpleMailMessage();     
//      设置收件人,寄件人   
        // String[] array = new String[] {"sun111@163.com","sun222@sohu.com"};   
//      mailMessage.setTo(array);   
        mailMessage.setTo("sun111@163.com");     
        mailMessage.setFrom("webadmin@163.com");     
        mailMessage.setSubject("测试邮件群发!");     
        mailMessage.setText("测试我的简单邮件发送机制!!");     
  
//      发送邮件   
        senderImpl.send(mailMessage);     
  
        System.out.println("邮件发送成功.....");     
    }     
}   

2:HTML邮件的发送
package com;   
  
import javax.mail.internet.MimeMessage;   
import org.springframework.mail.javamail.JavaMailSenderImpl;   
import org.springframework.mail.javamail.MimeMessageHelper;   
  
/**   
 * 本类测试html邮件   
 * @author sunny   
 *   
 */  
public class HTMLMailDemo {   
    /**   
     * @param args   
     */  
    public static void main(String[] args) throws Exception {   
        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();   
  
        //设定mail server     
        senderImpl.setHost("192.168.1.1");   
        senderImpl.setUsername("username");   
        senderImpl.setPassword("password");   
  
        //建立邮件消息,发送简单邮件和html邮件的区别     
        MimeMessage mailMessage = senderImpl.createMimeMessage();   
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);   
  
        //设置收件人,寄件人     
        messageHelper.setTo("sun111@163.com");   
        messageHelper.setFrom("webadmin@163.com");   
        messageHelper.setSubject("测试HTML邮件!");   
        //true 表示启动HTML格式的邮件     
        messageHelper   
                .setText(   
                        "<html><head></head><body><h1>hello!!zhangjian</h1></body></html>",   
                        true);   
  
        //发送邮件     
        senderImpl.send(mailMessage);   
  
        System.out.println("邮件发送成功.....");   
    }   
}  
 3:本类测试邮件中嵌套图片
package com;   
  
import java.io.File;   
import javax.mail.internet.MimeMessage;   
import org.springframework.core.io.FileSystemResource;   
import org.springframework.mail.javamail.JavaMailSenderImpl;   
import org.springframework.mail.javamail.MimeMessageHelper;   
  
/**   
 * 本类测试邮件中嵌套图片   
 * @author sunny   
 *   
 */  
public class AttachedImageMail {   
    public static void main(String[] args) throws Exception{     
   JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();     
        
   //设定mail server     
   senderImpl.setHost("192.168.1.2");     
   senderImpl.setUsername("username");     
   senderImpl.setPassword("pssword");     
   //建立邮件消息,发送简单邮件和html邮件的区别     
   MimeMessage mailMessage = senderImpl.createMimeMessage();     
   //注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,        
 multipart模式     
   MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);     
        
   //设置收件人,寄件人     
   messageHelper.setTo("sun111@163.com");     
   messageHelper.setFrom("webadmin@163.com");     
   messageHelper.setSubject("测试邮件中嵌套图片!!");     
   //true 表示启动HTML格式的邮件     
   messageHelper.setText("<html><head></head><body><h1>hello!!zhangjian</h1>" +     
     "<img src=\"cid:aaa\"/></body></html>",true);     
          
   FileSystemResource img = new FileSystemResource(new File("c:/aaa.jpg"));     
        
   messageHelper.addInline("aaa",img);     
        
   //发送邮件     
   senderImpl.send(mailMessage);     
        
   System.out.println("邮件发送成功.....");     
  }   
}  




4:  测试邮件中包含附件
package com;   
  
import java.io.File;   
import javax.mail.internet.MimeMessage;   
import org.springframework.core.io.FileSystemResource;   
import org.springframework.mail.javamail.JavaMailSenderImpl;   
import org.springframework.mail.javamail.MimeMessageHelper;   
  
public class AttachedFileMail {   
    /**  
     * 本类测试的是关于邮件中带有附件的例子  
     *   
     * @param args  
     */  
    public static void main(String[] args) throws Exception{     
        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();     
  
        // 设定mail server   
        senderImpl.setHost("192.168.1.2");     
        senderImpl.setUsername("username");     
        senderImpl.setPassword("password");     
        // 建立邮件消息,发送简单邮件和html邮件的区别   
        MimeMessage mailMessage = senderImpl.createMimeMessage();     
        // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,   
        ultipart模式     
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);     
  
        // 设置收件人,寄件人   
        messageHelper.setTo("sun111@163.com");     
        messageHelper.setFrom("webadmin@163.com");     
        messageHelper.setSubject("测试邮件中上传附件!!");     
        // true 表示启动HTML格式的邮件   
        messageHelper.setText("<html><head></head><body><h1>你好:附件中有关于CSS的学习资料!</h1></body></html>",true);     
  
        FileSystemResource file = new FileSystemResource(new File("d:/CSS110.rar"));     
        // 这里的方法调用和插入图片是不同的。   
        messageHelper.addAttachment("CSS110.rar",file);     
  
        // 发送邮件   
        senderImpl.send(mailMessage);     
  
        System.out.println("邮件发送成功.....");     
    }   
}  


5.spring和quartz进行定时邮件发送
一  发送邮件的基类:



web服务器启动后,程序会按时间定时执行。


详见:http://happymen001.iteye.com/admin/blogs/580099
下面附定时器的时间配置例子:

<value>0 27 14 * * ?</value><!--定时在任何月份任何日期(不管星期几)的22点52分0秒 -->
     <!-- 一个cron表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下:
      1.秒(0-59)
      2.分钟(0-59)
      3.小时(0-23)
      4.月份中的是期(1-31)
      5.月份(1-12或SUN-DEC)
      6.星期中的日期(1-7或SUN-SAT)
      7.年份(1970-2099)
     例子:
      0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点
      0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟
      30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时
      0 0 8-5 ? * MON-FRI 每个工作日的工作时间
   
      - 区间
      * 通配符
      ? 你不想设置那个字段
     -->
一些例子

"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
如果缺少  quartz-all-1.6.0.jar  包可能就会报
ERROR] main 2010-01-26 10:43:15,034 org.springframework.web.context.ContextLoader     - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'methodInvokingJobDetail' defined in ServletContext resource [/WEB-INF/classes/config/spring/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org.quartz.JobExecutionException
Caused by:
java.lang.NoClassDefFoundError: org.quartz.JobExecutionException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean.class$(MethodInvokingJobDetailFactoryBean.java:83)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean.<clinit>(MethodInvokingJobDetailFactoryBean.java:82)
分享到:
评论

相关推荐

    spring-boot-examples-master.zip

    5. **定时任务示例**:利用Spring Boot的TaskScheduler或Quartz实现定时任务。 6. **云服务示例**:如Docker化部署、服务发现(如Eureka、Consul)和配置中心(如Config Server)等。 7. **微服务示例**:展示如何...

    spring boot 入门项目

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。...同时,可以尝试实现如 RESTful API、数据库操作、定时任务、邮件发送等功能,逐步掌握 Spring Boot 的强大功能。

    即开即用的基于SpringBoot的后台管理系统脚手架,已集成权限管理,文件上传,定时任务,邮件中心,监控中心等模块.zip

    - **JavaMailSender**:Spring提供的邮件发送接口,支持SMTP协议发送邮件。 - **MailTemplate**:一些框架提供了邮件模板,方便构造美观的HTML邮件。 6. **监控中心** - **Actuator**:Spring Boot自带的端点...

    基于springboot的在线教育管理系统

    使用 Spring Task 或者 Quartz,可以在 Spring Boot 中实现定时任务,如定期清理过期数据、发送邮件提醒等。 11. **错误处理与日志记录** 自定义异常处理器和使用 Logback 或 Log4j 进行日志记录,有助于调试和...

    spring-boot-demo_xkcoding.tar.gz

    plus(快速操作Mybatis)、BeetlSQL(强大的ORM框架)、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类型邮件)、task(基础定时任务)、quartz(动态管理定时任务)、xxl-job(分布式...

    spring boot集成demo大全.zip

    plus(`快速操作Mybatis`)、BeetlSQL(`强大的ORM框架`)、upload(`本地文件上传和七牛云文件上传`)、redis(`缓存`)、ehcache(`缓存`)、email(`发送各种类型邮件`)、task(`基础定时任务`)、quartz(`动态管理定时任务`)...

    springbootapi

    12. **邮件服务**:通过JavaMailSender接口,Spring Boot可以轻松地发送电子邮件。 13. **任务调度**:Spring Boot整合了Quartz或Spring Task,可用于实现定时任务。 14. **缓存管理**:Spring Boot支持EhCache、...

    java管理系统源码

    - 订单管理:处理购销订单,跟踪订单状态,可能使用Spring Boot集成Quartz进行定时任务处理。 - 库存控制:实时更新库存,防止超卖,可能使用消息队列如RabbitMQ或Kafka进行库存同步。 - CRUD操作:使用JPA或...

    springboot013基于SpringBoot的旅游网站的设计与实现.zip

    使用Spring Boot的Task或者Quartz等定时任务框架,实现如定期发送邮件提醒、统计分析等功能。 9. 日志管理 结合Logback或Log4j进行日志记录,通过ELK(Elasticsearch、Logstash、Kibana)堆栈实现日志收集、存储...

    javaee-spring-boot-doaction:(JavaEE开发的颠覆者Spring Boot实战)spring-boot实战随书源码—汪云飞

    5. **定时任务**:Spring Boot整合了Quartz或Spring的Task,可以创建定时任务。 6. **Actuator**:Spring Boot Actuator提供了丰富的监控和管理端点,用于健康检查、指标收集、应用信息展示等。 7. **集成测试**:...

    广东省土地资源招牌监控

    7. **系统架构**:系统可能采用微服务架构,将各个功能模块拆分成独立的服务,如公告监控服务、邮件发送服务等,这样可以提高系统的可扩展性和容错性。 8. **持续集成/持续部署(CI/CD)**:为了保证代码质量和快速...

    java电商源代码.

    Quartz或Spring Task用于定时任务,例如定时生成报表、清理过期数据、发送邮件提醒等。 11. **消息队列**: RabbitMQ或Kafka用于异步处理,如订单确认、库存同步,减少系统响应时间并提高处理能力。 12. **性能...

    Java超时订单管理系统源码.zip

    6. **定时任务**:为了实现订单超时的自动处理,系统可能使用了Spring的定时任务组件(如@Scheduled注解),或者Quartz、Spring Cloud Task等第三方库,定期检查并处理超时订单。 7. **异常处理**:系统会包含一套...

    轻松商城系统.rar

    7. **任务调度与队列**: Quartz或Spring Task可能用于后台任务的定时执行,如发送邮件、清理过期数据等。RabbitMQ或Kafka可能用于消息队列,处理异步任务和解耦系统组件。 8. **测试与部署**: 单元测试、集成测试...

    自动化配置报表系统

    4. 自动化报告:定时任务自动运行报表,并以邮件、PDF或其他格式发送给指定人员。 5. 报表权限管理:控制不同用户对报表的访问权限,如查看、编辑、导出等操作。 "自动化配置报表系统"的实现可能涉及的技术还包括:...

    基于springboot的校园疫情防控系统源码数据库.doc

    - **技术实现**:利用Quartz定时任务调度器定期检查是否有新公告需要推送。前端使用Bootstrap框架美化界面布局,提升用户体验。 6. **健康表管理** - **功能概述**:维护学生的健康监测表格,方便后期追溯及统计...

    OA_java.zip_办公

    JavaMail API可以用于发送邮件,而Quartz等库可以用于定时任务调度。 4. **权限管理**:确保不同用户根据其角色和职责访问相应的功能和信息。Spring Security或Apache Shiro等框架可以实现权限控制。 5. **报表与...

    分布式数据库旅游

    7. 监控与日志:使用Prometheus、Grafana进行性能监控,ELK Stack(Elasticsearch、Logstash、Kibana)收集和分析日志,确保系统的稳定运行和问题排查。 8. 安全性:系统应具备防止SQL注入、XSS攻击等安全措施,...

    Java会议室预约系统源码.zip

    5. **提醒服务**:系统支持邮件或短信提醒,预约成功、即将开始或超时未使用时都会发送通知。 6. **统计分析**:提供会议室使用率、热门时段等数据分析,为优化资源配置提供依据。 三、核心技术点 1. **Spring ...

Global site tag (gtag.js) - Google Analytics