`

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)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics