导入依赖
pom.xml
<!--邮件发送依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
application.yaml
#一般配置
spring:
mail:
username: 2090332885@qq.com
password: iipohkkqxhqbbggb
host: smtp.qq.com
application.properties
# 腾讯的邮件服务器
spring.mail.host=smtp.qq.com
# 我们在准备工作中找到的服务器端口号
spring.mail.port=465
# 邮箱的账号
spring.mail.username=xxx@qq.com
# 开启服务时,服务器返回给我们的授权码
spring.mail.password=xxxxx
# 编码
spring.mail.default-encoding=utf-8
# 加密连接的工具类
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启debug
spring.mail.properties.mail.debug=true;
测试
@SpringBootTest
class SpringbootLearnApplicationTests {
@Autowired
JavaMailSender javaMailSender;
/*简单的邮件发送*/
@Test
void contextLoads() {
SimpleMailMessage simpMsg = new SimpleMailMessage();
// 发送人的邮箱
simpMsg.setFrom("2090332885@qq.com");
// 接收人的邮箱
simpMsg.setTo("1579844217@qq.com");
// 发送的时间
simpMsg.setSentDate(new Date());
// 发送邮件的主题
simpMsg.setSubject("邮件主题-测试邮件");
// 发送邮件的内容
simpMsg.setText("邮件内容-测试邮件");
javaMailSender.send(simpMsg);
}
/*带附件的邮件发送*/
@Test
void test1() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 发送人的邮箱
helper.setFrom("2090332885@qq.com");
// 接收人的邮箱
helper.setTo("1579844217@qq.com");
// 发送的时间
helper.setSentDate(new Date());
// 发送邮件的主题
helper.setSubject("邮件主题-测试邮件");
// 发送邮件的内容
helper.setText("邮件内容-测试邮件");
// 要发送的附件
File file = new File("C:\\solo-file\\picture\\a-2.jpg");
helper.addAttachment(file.getName(),file);
javaMailSender.send(mimeMessage);
}
/*邮件内容中带有图片的邮件发送*/
@Test
void test2() throws MessagingException {
// 要发送的附件
File file = new File("C:\\solo-file\\picture\\a-2.jpg");
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 发送人的邮箱
helper.setFrom("2090332885@qq.com");
// 接收人的邮箱
helper.setTo("1579844217@qq.com");
// 发送的时间
helper.setSentDate(new Date());
// 发送邮件的主题
helper.setSubject("邮件主题-测试邮件");
// 发送邮件的内容, 第一个参数表示发送的 HTML 文件内容,第二个参数表示支持 HTML 。
// 其中,img 标签中的 'cid:p01' 表示占位符
helper.setText("<div>带有图片的邮件内容:</div><div><img src='cid:p01'/></div>",true);
helper.addAttachment("p01",file);
javaMailSender.send(mimeMessage);
}
}
在 resources/templates 目录下创建 Thymeleaf 模板
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>欢迎 <span th:text="${username}"></span> 加入 <span th:text="${company}"></span> 大家庭,您的入职信息如下:</div>
<table border="1">
<tr>
<td>姓名</td>
<td th:text="${username}"></td>
</tr>
<tr>
<td>职位</td>
<td th:text="${position}"></td>
</tr>
<tr>
<td>薪水</td>
<td th:text="${salary}"></td>
</tr>
</table>
<div style="color: #ff0016;font-size: large">希望在未来的日子里携手奋进!</div>
</body>
</html>
发送邮件
@Autowired
TemplateEngine templateEngine;
@Test
void test4() throws MessagingException, IOException, TemplateException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 发送人的邮箱
helper.setFrom("1963385876@qq.com");
// 接收人的邮箱
helper.setTo("2516313840@qq.com");
// 发送的时间
helper.setSentDate(new Date());
// 发送邮件的主题
helper.setSubject("邮件主题-测试邮件");
// 设置上下文
Context ctx = new Context();
ctx.setVariable("username","crc");
ctx.setVariable("position","Java工程师");
ctx.setVariable("company","xxx集团");
ctx.setVariable("salary","99999");
// 参数1 表示模板的位置(默认在template目录下查找),参数2 表示模板的上下文,不能使用对象
String text = templateEngine.process("mail.html", ctx);
// 设置邮件内容
helper.setText(text, true);
javaMailSender.send(mimeMessage);
}