SpringBoot发送邮件
对应的pom.xml中的相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- 必须含有 否则会有空指针异常 -->
<!-- 包含支持缓存cache JCA JMX 邮件服务 任务任务计划 Scheduling方面的类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
对应的配置文件
发送邮件存在,纯文本,含有html标签的发送邮件,含有图片和附件的的邮件,
spring.mail.host=smtp.qq.com
spring.mail.username=qq账号@qq.com
spring.mail.password=授权码(切记打开stmp)
spring.mail.port=465
# qq使用smtps 163使用smtp
spring.mail.protocol=smtps
spring.mail.default-encoding=UTF-8
# 有关smtp服务的开启
# qq邮箱必须有这个 安全验证机制
spring.mail.properties.mail.sll.enable=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
@SpringBootTest
class SpringBootEmailApplicationTests {
@Autowired
private JavaMailSender mailSender;
// 发送纯文本的邮件
@Test
void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("邮件主题:服务器运用");
message.setText("测试邮件");
message.setTo("@163.com");
message.setFrom("@qq.com");
mailSender.send(message);
}
// 含有html标签的邮件
@Test
void contextLoads2() throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
// 附件
// helper.addAttachment();
// 邮件主题
helper.setSubject("验证码");
helper.setText("", true);
helper.setTo("@163.com");
helper.setFrom("@qq.com");
mailSender.send(message);
}
// 含有图片的邮件
@Test
void contextLoads3() throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
String id = "test";
String ImagePath = "图片路径(尽量避免路径中出现中文)";
// 附件 传入附件的名字和 类型是文件
// helper.addAttachment();
// 邮件主题
helper.setSubject("含有图片的邮件");
helper.setText("<h1>图片:</h1><img src='cid:" + id + "'/>", true);
// 加载绝对路径的资源
FileSystemResource resource = new FileSystemResource(new File(ImagePath));
// 内嵌图片
helper.addInline(id, resource);
helper.setTo("@qq.com");
helper.setFrom("@qq.com");
mailSender.send(message);
}
}
发送异步
@EnableAsync 开启异步注解
@Async 异步方法
异步进行邮件调用类比于平时的短信验证就属于异步执行
Controller
@RestController
public class AsyncController {
@Autowired
private AsynService asynService;
@RequestMapping("/sendEamil")
public String sendEamil(){
asynService.emial();
return "ok";
}
}
Service
@Service
public class AsynService {
@Autowired
private JavaMailSender mailSender;
// 执行异步发送邮件的方法
@Async
public void emial(){}
对应的定时发送 采用的是CRON表达式
@EnableScheduling 开启定时任务
@Scheduled 定时方法
简单的CRON表达式