環(huán)境: Spring Boot 2.1.5.RELEASE 、Java 8
構(gòu)建環(huán)境
在pom.xml
文件中加入依賴
<!-- Thymeleaf 模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 發(fā)送郵件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
在application.properties
文件中加入163郵箱的配置
## 發(fā)送郵件配置
spring.mail.host=smtp.163.com # 163郵箱的smtp
spring.mail.port=25 # 端口域醇,
spring.mail.username=郵箱的用戶名
spring.mail.password=郵箱的授權碼(不是登錄密碼)
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
163郵箱的收取郵件支持POP/IMAP兩種協(xié)議蹄咖,發(fā)送郵件采用SMTP協(xié)議抖锥,收件和發(fā)件均使用SSL協(xié)議來進行加密傳輸,采用SSL協(xié)議需要單獨對帳戶進行設置喉恋。采用SSL協(xié)議和非SSL協(xié)議時端口號有所區(qū)別审残,參照下表的一些常見配置組合:
類型 | 服務器名稱 | 服務器地址 | SSL協(xié)議端口號 | 非SSL協(xié)議端口號 |
---|---|---|---|---|
收件服務器 | POP | pop.163.com | 995 | 110 |
收件服務器 | IMAP | imap.163.com | 993 | 143 |
發(fā)件服務器 | SMTP | smtp.163.com | 465/994 | 25 |
163郵箱的地址和端口: http://help.163.com/10/0731/11/6CTUBPT300753VB8.html
發(fā)送郵件的工具類
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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 javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Map;
@Component
public class EmailUtil {
private static final Logger logger = LoggerFactory.getLogger(EmailUtil.class);
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
@Value("${spring.mail.username}")
private String senderMailAddress;
public void sendSimpleMail(Map<String, Object> valueMap){
MimeMessage mimeMessage = null;
try {
mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
// 設置發(fā)件人郵箱
helper.setFrom(senderMailAddress);
// 設置收件人郵箱
helper.setTo((String[])valueMap.get("to"));
// 設置郵件標題
helper.setSubject(valueMap.get("title").toString());
// 設置郵件正文
helper.setSubject(valueMap.get("content").toString());
// 添加正文(使用thymeleaf模板)
Context context = new Context();
context.setVariables(valueMap);
String content = this.templateEngine.process("mail", context);
helper.setText(content, true);
// 發(fā)送郵件
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
logger.error("發(fā)送郵件拋出了異常麻掸,信息為:"+ e.getCause());
}
}
}
HTML模板mail.html
代碼
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>郵箱發(fā)送</title>
</head>
<body>
<p><span th:text="${title}"></span></p>
<p th:text="${content}"></p>
</body>
</html>
MailController.java
類中的代碼
import com.tengxt.demo.util.EmailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.HashMap;
import java.util.Map;
@Controller
public class MailController {
@Autowired
private EmailUtil emailUtil;
@RequestMapping("/mail")
public void sendMail(){
Map<String, Object> valueMap = new HashMap<>();
valueMap.put("to", new String[]{"收件人郵箱1","收件人郵箱2",...);
valueMap.put("title", "測試郵件標題");
valueMap.put("content", "測試郵件內(nèi)容");
// 調(diào)用發(fā)送郵件的方法
emailUtil.sendSimpleMail(valueMap);
}
}