关于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)
分享到:
相关推荐
5. **定时任务示例**:利用Spring Boot的TaskScheduler或Quartz实现定时任务。 6. **云服务示例**:如Docker化部署、服务发现(如Eureka、Consul)和配置中心(如Config Server)等。 7. **微服务示例**:展示如何...
Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。...同时,可以尝试实现如 RESTful API、数据库操作、定时任务、邮件发送等功能,逐步掌握 Spring Boot 的强大功能。
- **JavaMailSender**:Spring提供的邮件发送接口,支持SMTP协议发送邮件。 - **MailTemplate**:一些框架提供了邮件模板,方便构造美观的HTML邮件。 6. **监控中心** - **Actuator**:Spring Boot自带的端点...
使用 Spring Task 或者 Quartz,可以在 Spring Boot 中实现定时任务,如定期清理过期数据、发送邮件提醒等。 11. **错误处理与日志记录** 自定义异常处理器和使用 Logback 或 Log4j 进行日志记录,有助于调试和...
plus(快速操作Mybatis)、BeetlSQL(强大的ORM框架)、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类型邮件)、task(基础定时任务)、quartz(动态管理定时任务)、xxl-job(分布式...
plus(`快速操作Mybatis`)、BeetlSQL(`强大的ORM框架`)、upload(`本地文件上传和七牛云文件上传`)、redis(`缓存`)、ehcache(`缓存`)、email(`发送各种类型邮件`)、task(`基础定时任务`)、quartz(`动态管理定时任务`)...
12. **邮件服务**:通过JavaMailSender接口,Spring Boot可以轻松地发送电子邮件。 13. **任务调度**:Spring Boot整合了Quartz或Spring Task,可用于实现定时任务。 14. **缓存管理**:Spring Boot支持EhCache、...
- 订单管理:处理购销订单,跟踪订单状态,可能使用Spring Boot集成Quartz进行定时任务处理。 - 库存控制:实时更新库存,防止超卖,可能使用消息队列如RabbitMQ或Kafka进行库存同步。 - CRUD操作:使用JPA或...
使用Spring Boot的Task或者Quartz等定时任务框架,实现如定期发送邮件提醒、统计分析等功能。 9. 日志管理 结合Logback或Log4j进行日志记录,通过ELK(Elasticsearch、Logstash、Kibana)堆栈实现日志收集、存储...
5. **定时任务**:Spring Boot整合了Quartz或Spring的Task,可以创建定时任务。 6. **Actuator**:Spring Boot Actuator提供了丰富的监控和管理端点,用于健康检查、指标收集、应用信息展示等。 7. **集成测试**:...
7. **系统架构**:系统可能采用微服务架构,将各个功能模块拆分成独立的服务,如公告监控服务、邮件发送服务等,这样可以提高系统的可扩展性和容错性。 8. **持续集成/持续部署(CI/CD)**:为了保证代码质量和快速...
Quartz或Spring Task用于定时任务,例如定时生成报表、清理过期数据、发送邮件提醒等。 11. **消息队列**: RabbitMQ或Kafka用于异步处理,如订单确认、库存同步,减少系统响应时间并提高处理能力。 12. **性能...
6. **定时任务**:为了实现订单超时的自动处理,系统可能使用了Spring的定时任务组件(如@Scheduled注解),或者Quartz、Spring Cloud Task等第三方库,定期检查并处理超时订单。 7. **异常处理**:系统会包含一套...
7. **任务调度与队列**: Quartz或Spring Task可能用于后台任务的定时执行,如发送邮件、清理过期数据等。RabbitMQ或Kafka可能用于消息队列,处理异步任务和解耦系统组件。 8. **测试与部署**: 单元测试、集成测试...
4. 自动化报告:定时任务自动运行报表,并以邮件、PDF或其他格式发送给指定人员。 5. 报表权限管理:控制不同用户对报表的访问权限,如查看、编辑、导出等操作。 "自动化配置报表系统"的实现可能涉及的技术还包括:...
- **技术实现**:利用Quartz定时任务调度器定期检查是否有新公告需要推送。前端使用Bootstrap框架美化界面布局,提升用户体验。 6. **健康表管理** - **功能概述**:维护学生的健康监测表格,方便后期追溯及统计...
JavaMail API可以用于发送邮件,而Quartz等库可以用于定时任务调度。 4. **权限管理**:确保不同用户根据其角色和职责访问相应的功能和信息。Spring Security或Apache Shiro等框架可以实现权限控制。 5. **报表与...
7. 监控与日志:使用Prometheus、Grafana进行性能监控,ELK Stack(Elasticsearch、Logstash、Kibana)收集和分析日志,确保系统的稳定运行和问题排查。 8. 安全性:系统应具备防止SQL注入、XSS攻击等安全措施,...
5. **提醒服务**:系统支持邮件或短信提醒,预约成功、即将开始或超时未使用时都会发送通知。 6. **统计分析**:提供会议室使用率、热门时段等数据分析,为优化资源配置提供依据。 三、核心技术点 1. **Spring ...