关于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整合Quartz定时发送邮件
该文档写了spring结合quartz定时发送邮件,有详细的配置文件,和相关代码,稍加研究就可以运行。
在spring利用javamail,quartz定时发送邮件
Spring框架整合Quartz,使用javamail定时发送邮件
spring-boot微服务框架,定时从数据库读取数据生成报表,并发送给boss
spring注解Quartz定时执行功能
基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查
spring+quartz定时小例子,架包+文档 我自己整理的
上一次传错了资源了,这个是正确的,包含quartz动态定时任务的
spring结合quartz的定时的2种方式
spring整合quartz定时任务调度..........
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。每10秒钟执行一次,可以根据自己配置。
Spring + quartz 定时任务修改定时时间不重启服务
spring整合quartz动态定时任务demo-spring-quartz-demo
spring提供的定时发送邮件功能一直深受广大web开发者的喜爱,这篇文章主要介绍了Spring+quartz实现定时发送邮件功能实例,有兴趣的可以了解一下。
针对于spring集成quartz配置进行详细说明,并提供部分简单示例说明配置。
spring+quartz的定时任务,希望能帮到大家!
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
spring3.0+quartz-1.6.0实现定时任务