1.邮件发送需要引入spring-boot-starter-mail依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
2.在application.properties中配置发送人邮箱信息。这里我使用QQ邮箱作为发送人邮箱,需要在QQ邮箱中设置开启POP3/SMTP服务,具体设置方法是点击“设置”,下拉到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务” 项,点击“POP3/SMTP服务”右方的“开启按钮”,按照提示发送短信,然后点击“已发送”,生成随机码,将随机码拷贝,配置到spring.mail.password中。
[email protected] spring.mail.password=izzrhhcusjfibfab spring.mail.host=smtp.qq.com spring.mail.properties.mail.smtp.ssl.enable=true
3.使用JavaMailSenderImpl对象发送邮件。
SimpleMailMessage message=new SimpleMailMessage(); //设置邮件主体 message.setSubject("通知-这是一个SpringBoot的测试邮件"); //设置邮件内容 message.setText("Hello JavaMail!"); ? //设置接收人邮箱 message.setTo("[email protected]"); //设置发送人邮箱(需要进入QQ邮箱开启POP3/SMTP服务 ) message.setFrom("[email protected]"); mailSender.send(message);
4.如果想发送带附件的邮件,则需要使用MimeMessageHelper对象。
//创建一个复杂的消息邮件 MimeMessage mimeMessage=mailSender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true); ? //邮件设置 helper.setSubject("通知-这是一个带附件的测试邮件"); helper.setText("<b style='color:red'>看到附件没?</b>",true); ? ? //设置接收人邮箱 helper.setTo("[email protected]"); //设置发送人邮箱(需要进入QQ邮箱开启POP3/SMTP服务 ) helper.setFrom("[email protected]"); ? //上传文件 helper.addAttachment("图1",new File("C:\\Users\\Administrator\\Desktop\\起点封面素材\\微信图片_20190704092554.jpg")); helper.addAttachment("图2",new File("C:\\Users\\Administrator\\Desktop\\起点封面素材\\微信图片_20190704092612.jpg")); mailSender.send(mimeMessage);
另外,异步任务和定时任务SpringBoot已经帮我们内置了,如果想要使用它们的话只需要在相应类中添加相关注解即可。
异步任务
1.在启动类上方添加@EnableAsync注解开启异步任务。
2.在方法上方添加@Async注解标注该方法为异步方法。
定时任务
1.在启动类上方添加@EnableScheduling注解开启基于异步的定时任务。
2.在方法上方添加@Scheduled(cron='')注解标注该方法为定时任务方法,注解中可定义cron表达式规则,cron属性中包含6个参数,分别表示秒、分钟、小时、日期、月份、星期,每个参数之间以空格隔开。