javascript
SpringBoot整合定时任务和Emil发送
SpringBoot整合定时任务和Emil发送
定时任务
任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,诸如长周期业务数据的计算,例如年度报表,诸如系统脏数据的处理,再比如系统性能监控报告,还有抢购类活动的商品上架,这些都离不开定时任务。在SpringBoot中使用定时任务十分简单,按照以往的经验,SpringBoot整合其它技术大致可分为三步:
- 导坐标
- 写配置
- 调接口
在pom.xml中导入对应坐标
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
在application.yml中写配置
spring:task:scheduling:pool:size: 1 # 任务调度线程池大小 默认 1thread-name-prefix: ssm_ # 调度线程名称前缀 默认 scheduling- shutdown:await-termination: false # 线程池关闭时等待所有任务完成await-termination-period: 10s # 调度线程关闭前最大等待时间,确保最后一定关闭这些配置根据自己的需求设置
在启动类上使用@EnableScheduling注解打开定时任务开关
@SpringBootApplication //开启定时任务 @EnableScheduling public class Springboot18TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot18TaskApplication.class, args);}}在需要开启定时任务的方法上添加@Scheduled注解并设置cron表达式
@Component public class MyTask {@Scheduled(cron = "0/1 * * * * ?")public void run(){System.out.println(Thread.currentThread().getName()+"这是一个定时任务");} }这里设置的cron代表每秒执行一次
测试结果
邮箱
发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。
- SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
- POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
- IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。
下面演示一下发邮件的过程
在pom.xml中导入坐标
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>在applicat.yml中写配置
spring:mail:host: smtp.qq.comusername: ***********@qq.compassword: 从你邮箱中获取host:配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。例如使用163邮箱就换成:host:smtp:163.com
username:你发送邮箱的邮箱名
password:这个不是你邮箱密码,而是你邮箱开启smtp时给你的密码
获取邮箱password
拿QQ邮箱举例子,在邮箱—设置—账户中开启POP3/SMTP服务即可获取
编写service接口及其实现类
发送普通邮箱
public interface SendEmil {public void sendemil();//发送普通邮箱public void sendemilX();//发送多组件邮箱 } public class SendEmilImpl implements SendEmil {@Autowiredprivate JavaMailSender javaMailSender;private String from ="test@qq.com";//发送人的邮箱private String to = "test@qq.com";//接收人的邮箱private String subject = "测试邮件";//邮箱标题private String context = "测试邮件内容";//邮箱正文@Overridepublic void sendemil() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(别名)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}发送邮件是使用JavaMailSender类的send方法,而邮件主体是通过SimpleMailMessage对象来进行封装
发送多组件邮箱:包含图片,附件等
发送简单邮件仅需要提供对应的4个基本信息就可以了,如果想发送复杂的邮件,需要更换邮件对象。使用MimeMessage可以发送特殊的邮件。
@Overridepublic void sendemilX() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);//开启添加附件helper.setFrom(from + "(别名)");helper.setTo(to);helper.setSubject(subject);helper.setText(context, true);//添加附件File f1 = new File("这里选择附件的地址");helper.addAttachment(f1.getName(),f1);//添加附件javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}这里的MimeMessage对象是由javaMailSender的createMimeMessage创建
总结
以上是生活随笔为你收集整理的SpringBoot整合定时任务和Emil发送的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: html中text的maxlength,
- 下一篇: angularJS求助