一、pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</dependency>
二、yml
spring:
mail:
host: smtp.qq.com
username: 76*******@qq.com
password: kl**************
port: 587
default-encoding: UTF-8
thymeleaf-html: exchange.html
subject: 这是一封测试邮件
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
starttls:
enable: true
required: true
ssl:
enable: true
debug: true
三、静态注入(两种方式)
@Component
public class EmailUtils {
@Autowired
private JavaMailSender javaMailSender;
private static JavaMailSender SjavaMailSender;
@Value("${spring.mail.username}")
private String from;
private static String Sfrom;
@PostConstruct
private void init() {
SjavaMailSender= javaMailSender;
Sfrom = from;
}
private static JavaMailSender javaMailSender;
@Autowired
private void setJavaMailSender(JavaMailSender javaMailSender) {
EmailUtils.javaMailSender = javaMailSender;
}
private static String from;
@Value("${spring.mail.username}")
private void setFrom(String from) {
EmailUtils.from = from;
}
}
四、EmailUtils(完整代码 - Thymeleaf)
package com.*.*.utils;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.util.MapUtils;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Map;
@Component
public class EmailUtils {
private static JavaMailSender javaMailSender;
@Autowired
private void setJavaMailSender(JavaMailSender javaMailSender) {
EmailUtils.javaMailSender = javaMailSender;
}
private static TemplateEngine templateEngine;
@Autowired
private void setTemplateEngine(TemplateEngine templateEngine) {
EmailUtils.templateEngine = templateEngine;
}
private static String from;
@Value("${spring.mail.username}")
private void setFrom(String from) {
EmailUtils.from = from;
}
private static String html;
@Value("${spring.mail.thymeleaf-html}")
private void setHtml(String html) {
EmailUtils.html = html;
}
private static String subject;
@Value("${spring.mail.subject}")
private void setSubject(String subject) {
EmailUtils.subject = subject;
}
public static int sendSimpleMail(String text, String... toMails) {
if (StringUtils.isEmpty(text) || ArrayUtils.isEmpty(toMails)) {
return 0;
}
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject(subject);
message.setFrom(from);
message.setBcc(from);
message.setTo(toMails);
message.setText(text);
javaMailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
return 1;
}
public static int sendThymeleafMail(String goldCoinCode, String... toMails) {
if (StringUtils.isEmpty(goldCoinCode)) {
return 0;
}
return sendThymeleafMail(null, goldCoinCode, toMails);
}
public static int sendThymeleafMail(Map<String, Object> map, String... toMails) {
if (MapUtils.isEmpty(map)) {
return 0;
}
return sendThymeleafMail(map, null, toMails);
}
private static int sendThymeleafMail(Map<String, Object> map, String goldCoinCode, String... toMails) {
if (ArrayUtils.isEmpty(toMails)) {
return 0;
}
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject(subject);
helper.setFrom(from);
helper.setBcc(from);
helper.setTo(toMails);
Context context = new Context();
if (!MapUtils.isEmpty(map)) {
context.setVariables(map);
} else {
context.setVariable("GoldCoinCode", goldCoinCode);
}
String process = templateEngine.process(html, context);
helper.setText(process,true);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return 0;
}
return 1;
}
}
五、exchange.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>exchange</title>
</head>
<style>
body {
cursor: default;
}
.exchangeCode {
color: #72cdff;
}
</style>
<body>
<div>
<label>ExchangeCode:</label>
<div class="exchangeCode" th:text="${GoldCoinCode}"></div>
</div>
</body>
</html>
六、测试
public static void main(String[] args) {
EmailUtils.sendThymeleafMail("SHKSJSDFHHJKJK", "76******42@qq.com");
}