定时发送邮件接口,只需要传入发送邮件的时间,邮箱账号,邮件内容,即可定时发送邮件
一、定时任务
二、多线程
三、发送邮件
邮件依赖
<!--email-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.4.3</version>
</dependency>
@Configuration
public class ThreadPoolTaskSchedulerCreate {
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
return new ThreadPoolTaskScheduler();
}
}
@PostMapping("/addSchedule")
public String addSchedule(@RequestBody IssueNoticeDTO issueNoticeDTO){
//实体类可以自己定义 也可以直接写参数 主要看你想怎么传值
String cron = issueNoticeDTO.getAppointmentTime();
//这是自己写的工具类,对2021-12-08 10:02:45 这样的时间格式转化为cron表达式 需求不同可以自己写一个其他的工具类或者其他方式 最终获得的是cron表达式即可
cron = SplitCronDate.getCronByDate(cron);
System.out.println(issueNoticeDTO.toString());
//添加定时任务
future = threadPoolTaskScheduler.schedule(new MyRunnable(issueNoticeDTO), new CronTrigger(cron));
return "添加定时任务成功!";
}
private class MyRunnable implements Runnable {
IssueNoticeDTO issueNoticeDTO;
//传入实体类,也可以传入其他参数,因为实体类包含了邮件内容和邮箱号码,后面要用
public MyRunnable(IssueNoticeDTO issueNoticeDTO){
this.issueNoticeDTO = issueNoticeDTO;
}
@Override
public void run() {
System.out.println("进入邮件发送");
SendMail sendMail = new SendMail();
sendMail.send(issueNoticeDTO);
}
}
public class SendMail {
public void send(IssueNoticeDTO issueNoticeDTO) {
new Thread(() -> {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
SimpleMailMessage message = new SimpleMailMessage();
//邮件设置
javaMailSender.setPort(587);
javaMailSender.setHost("smtp.qq.com");
//自己的邮箱 需要去开通邮箱协议
javaMailSender.setUsername("xxxx@xxxxx");
javaMailSender.setPassword("xxxxxxxxxxx");
//邮件内容
message.setSubject("出单通知");
message.setText("订单号:" + issueNoticeDTO.getOrderId() + " 客户:" + issueNoticeDTO.getCustomerName() + " 电话:" + issueNoticeDTO.getCustomerPhone() + " 地址:" + issueNoticeDTO.getCustomerAddress() + " 预约时间:" + issueNoticeDTO.getAppointmentTime());
//发送给谁
message.setTo("xxxxxxxxx");
message.setFrom("xxxxxxxxx");
javaMailSender.send(message);
System.out.println("发送成功");
}).start();
}
}
这里可以申请
但是这还不够完善,可以自己根据需求修改