1 介绍
参考连接:spring-boot-demo
springboot整合Mail简单文本邮件
2 开始
2.1 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>
2.2 application.yml
spring:mail:host: smtp.qq.com #SMTP服务器地址port: 465username: ***3457107 #登陆账号# 敏感数据时,可用jasypt加密,格式:ENC(加密字符串),算法:password: ENC(your encryptor code) #登陆密码(或授权码)#服务协议protocol: smtp# 连接失败,跳过错误test-connection: true# 编码集default-encoding: UTF-8properties:from: ***3457107@qq.com #邮件发信人(即真实邮箱)to: ***7887868@qq.com # 邮件接信人(为方便测试)# 设置是否需要认证mail.smtp.auth: true#mail.smtp.starttls.enable: truemail.smtp.starttls.required: true# sslmail.smtp.ssl.enable: trueservlet:multipart:max-file-size: 10MB #限制单个文件大小max-request-size: 50MB #限制请求总量# 为 jasypt 配置解密秘钥jasypt:encryptor:password: hikktn# 自定义算法,默认算法:PBEWithMD5AndDESivGeneratorClassname: org.jasypt.salt.RandomIVGenerator
2.3 MailService.java
public class MailService {/*** java邮件发送类*/@Autowiredprivate 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 邮件发送异常*/@Overridepublic 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 表示带有附件或htmlhelper.setText(content, true);// 抄送人不为空的场合if (ArrayUtil.isNotEmpty(cc)) {// 设置抄送人helper.setCc(cc);}// 发送消息mailSender.send(message);}}
2.4 test.html
存放目录:resources\email
<!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>
2.5 测试类
@RunWith(SpringRunner.class)@SpringBootTestpublic class MailServiceTest {@Autowiredprivate MailService mailService;/*** 测试HTML邮件,自定义模板目录** @throws MessagingException 邮件异常*/@Testpublic void sendHtmlMail2() throws MessagingException {// 创建一个spring资源模板解析器SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();// 设置上下文templateResolver.setApplicationContext(context);// 禁用缓存templateResolver.setCacheable(false);// 设置自定义模板目录templateResolver.setPrefix("classpath:/email/");// 设置文件后缀templateResolver.setSuffix(".html");// 设置模板解析templateEngine.setTemplateResolver(templateResolver);Context context = new Context();context.setVariable("project", "SpringBootMailDemo2");context.setVariable("author", "hikktn");context.setVariable("url", "https://blog.csdn.net/qq_41520636");// 模板引擎指向test.html页面String emailTemplate = templateEngine.process("test", context);mailService.sendHtmlMail("这是一封模板HTML邮件2", emailTemplate);}}
2.6 结果

