使用Spring-Boot的Mail来发送邮件,只需要导入依赖,配置参数,即可开始使用
- 1.导入spring-boot-starter-mail依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 2.配置邮件参数,示例QQ邮箱
邮箱授权码获取方法:QQ邮箱获取授权码
spring.mail.host=smtp.qq.com
spring.mail.port=587
#发送人的邮箱
spring.mail.username=xxx@163.com
#授权码
spring.mail.password=xxxxxxxxxxxxxxxx
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactory=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
- 3.测试发送简单邮件
@Autowired
JavaMailSender javaMailSender;
@Test
public void testSendMail() throws Exception {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setSubject("这是一个测试邮件主题");
helper.setText("测试邮件的内容");
//发送人邮箱,与配置文件中保持一致
helper.setFrom("xxx@163.com");
//接收人邮箱
helper.setTo("xxx@qq.com");
helper.setSentDate(new Date());
javaMailSender.send(msg);
}
- 4.测试发送携带附件的邮件
@Autowired
JavaMailSender javaMailSender;
@Test
public void testSendMailAndAccessory() throws MessagingException {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setSubject("这是一个测试邮件主题(含附件)");
helper.setText("测试邮件的内容(含附件)");
//发送人邮箱,与配置文件中保持一致
helper.setFrom("xxx@163.com");
//接收人邮箱
helper.setTo("xxx@qq.com");
helper.setSentDate(new Date());
helper.addAttachment("course.jpg", new File("E:\\course.jpg"));
javaMailSender.send(msg);
}
- 5.测试发送携带图片的邮件
@Autowired
JavaMailSender javaMailSender;
@Test
public void testSendMailAndImg() throws Exception {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setSubject("这是一个测试邮件主题(含图片)");
helper.setText("测试邮件的内容<br/>第一张图:<img src='cid:p01'/><br/>第二张图:<img src='cid:p02'/>", true);
//发送人邮箱,与配置文件中保持一致
helper.setFrom("xxx@163.com");
//接收人邮箱
helper.setTo("xxx@qq.com");
helper.setSentDate(new Date());
helper.addInline("p01", new File("E:\\1.jpg"));
helper.addInline("p02", new File("E:\\2.png"));
javaMailSender.send(msg);
}
- 6.使用thymeleaf模板发送邮件
额外依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
html模板 mail.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<h1>Hello 欢迎 <span style="color: red" th:text="${username}"></span> 使用该邮件!</h1>
</div>
</body>
</html>
@Autowired
JavaMailSender javaMailSender;
@Autowired
TemplateEngine templateEngine;
@Test
public void testByThymeleafSendMail() throws Exception {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setSubject("这是一个测试邮件主题(thymeleaf)");
//进行模板渲染
Context context = new Context();
context.setVariable("username", "小王");
String process = templateEngine.process("mail.html", context);
helper.setText(process, true);
//发送人邮箱,与配置文件中保持一致
helper.setFrom("xxx@qq.com");
//接收人邮箱
helper.setTo("xxx@qq.com");
helper.setSentDate(new Date());
javaMailSender.send(msg);
}