GitHub:SpringBootDemo
Gitee:SpringBootDemo
微信公众号:
通过Spring Boot整合邮件任务,支持发送邮件,可以实现服务故障时向指定邮箱发送邮件。
0 开发环境
- JDK:1.8
- Spring Boot:2.7.18
1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2 配置邮箱地址
2.1 获取授权码
以QQ邮箱为例,点击 【设置】 ,进入设置页面,点击 【账号】 标签,开启 【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】
开启服务后可以得到一个授权码
2.2 配置邮箱地址
server:
port: 8090
spring:
mail:
#邮箱地址
username: 921xxxxxx@qq.com
#授权码
password: vsxzxxxxxxxxxcbg
#发送服务器
host: smtp.qq.com
#开启加密授权验证
properties:
mail:
smtp:
ssl:
enable: true
这里,QQ邮箱需要开启加密授权验证,网易邮箱不需要
3 测试
新建测试类
@SpringBootTest(classes = MailApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class MailApplicationTest {
@Autowired
private JavaMailSenderImpl mailSender;
@Test
public void contextLoads() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//邮件主题
simpleMailMessage.setSubject("服务故障报警");
//邮件正文
simpleMailMessage.setText("xxx服务故障!请及时处理!");
simpleMailMessage.setTo("921xxxxxx@qq.com");
simpleMailMessage.setFrom("921xxxxxx@qq.com");
mailSender.send(simpleMailMessage);
}
}
这里@Autowired可能会有报错,不用管,只能使用自动装配方式获取JavaMailSenderImpl对象,如果自己new的话,会丢失配置信息。
运行测试类,成功收到邮件,发件人和收件人都是配置的邮箱地址
4 发送复杂邮件
4.1 新建附件文件
4.2 调整测试类
@SpringBootTest(classes = MailApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class MailApplicationTest {
@Autowired
private JavaMailSenderImpl mailSender;
//contextLoads()
@Test
public void contextLoadsMime() throws MessagingException, UnsupportedEncodingException {
//复杂邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
//组装,支持多文件
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setSubject("复杂服务故障报警");
//邮件正文,支持html标签
mimeMessageHelper.setText("<p style='color: red'>xxx服务故障!请及时处理!</p>", true);
//附件
//MimeUtility.encodeWord()防止中文乱码
mimeMessageHelper.addAttachment(MimeUtility.encodeWord("故障附件.txt", "UTF-8", "B"),
new File("data/故障附件.txt"));
mimeMessageHelper.addAttachment("error.txt", new File("data/error.txt"));
mimeMessageHelper.setTo("921xxxxxx@qq.com");
mimeMessageHelper.setFrom("921xxxxxx@qq.com");
mailSender.send(mimeMessage);
}
}
运行测试类,成功收到邮件,正文及附件显示正常
附件内容正常
至此,Spring Boot成功支持发送邮件。