介绍
参考连接:spring-boot-demo
springboot整合Mail简单文本邮件
开始
pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<jasypt.version>2.1.1</jasypt.version>
</properties>
<dependencies>
<!-- Spring Boot 邮件依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--jasypt配置文件加解密-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.1</version>
</dependency>
<!-- Spring Boot 模板依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<finalName>spring-boot-demo-email</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.yml
spring:
mail:
host: smtp.qq.com #SMTP服务器地址
port: 465
username: ***3457107 #登陆账号
# 敏感数据时,可用jasypt加密,格式:ENC(加密字符串),算法:
password: ENC(your encryptor code) #登陆密码(或授权码)
#服务协议
protocol: smtp
# 连接失败,跳过错误
test-connection: true
# 编码集
default-encoding: UTF-8
properties:
from: ***3457107@qq.com #邮件发信人(即真实邮箱)
to: ***7887868@qq.com # 邮件接信人(为方便测试)
# 设置是否需要认证
mail.smtp.auth: true
#
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
# ssl
mail.smtp.ssl.enable: true
servlet:
multipart:
max-file-size: 10MB #限制单个文件大小
max-request-size: 50MB #限制请求总量
# 为 jasypt 配置解密秘钥
jasypt:
encryptor:
password: hikktn
# 自定义算法,默认算法:PBEWithMD5AndDES
ivGeneratorClassname: org.jasypt.salt.RandomIVGenerator
welcome.html
存放目录:resources/templates,使用thymeleaf模板技术,默认识别改目录下的html。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>SpringBootMailDemo</title>
<style>
body {
text-align: center;
margin-left: auto;
margin-right: auto;
}
#welcome {
text-align: center;
}
</style>
</head>
<body>
<div id="welcome">
<h3>欢迎使用 <span th:text="${project}"></span> - Powered By <span th:text=" ${author}"></span></h3>
<span th:text="${url}"></span>
<div style="text-align: center; padding: 10px">
<a style="text-decoration: none;" href="#" th:href="@{${url}}" target="_bank">
<strong>hikktn,个人博客!</strong>
</a>
</div>
</div>
</body>
</html>
MailService.java
public class MailService {
/**
* java邮件发送类
*/
@Autowired
private JavaMailSender mailSender;
/**
* 发件人邮箱
*/
@Value("${spring.mail.properties.from}")
private String from;
/**
* 收件人邮箱
*/
@Value("${spring.mail.properties.to}")
private String to;
/**
* 发送HTML邮件
*
* @param subject 邮件主题
* @param content 邮件内容
* @param cc 抄送地址
* @throws MessagingException 邮件发送异常
*/
@Override
public void sendHtmlMail(String subject, String content, String... cc) throws MessagingException {
// 创建模板消息类
MimeMessage message = mailSender.createMimeMessage();
// 创建模板消息附带信息
MimeMessageHelper helper = new MimeMessageHelper(message, true);
// 设置发件人邮箱
helper.setFrom(from);
// 设置收件人邮箱
helper.setTo(to);
// 设置邮件标题
helper.setSubject(subject);
// 设置邮件主体内容, true 表示带有附件或html
helper.setText(content, true);
// 抄送人不为空的场合
if (ArrayUtil.isNotEmpty(cc)) {
// 设置抄送人
helper.setCc(cc);
}
// 发送消息
mailSender.send(message);
}
}
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailServiceTest {
@Autowired
private MailService mailService;
/**
* 测试HTML邮件
*
* @throws MessagingException 邮件异常
*/
@Test
public void sendHtmlMail() throws MessagingException {
// 创建一个HTML模板主体
Context context = new Context();
// 设置项目变量
context.setVariable("project", "SpringBootMailDemo");
// 设置作者变量
context.setVariable("author", "hikktn");
// 设置链接变量
context.setVariable("url", "https://blog.csdn.net/qq_41520636");
// 模板引擎指向welcome.html页面
String emailTemplate = templateEngine.process("welcome", context);
mailService.sendHtmlMail("这是一封模板HTML邮件", emailTemplate);
}
}