Spring Boot 提供了一個發送郵件的簡單抽象,使用的是下麵這個介面。 org.springframework.mail.javamail.JavaMailSender Spring Boot 提供了一個 ,並能自動配置,下麵來做個小例子,順便解析它做了什麼工作。 0、你所需具備的基礎 "什麼 ...
Spring Boot 提供了一個發送郵件的簡單抽象,使用的是下麵這個介面。
org.springframework.mail.javamail.JavaMailSender
Spring Boot 提供了一個 starter
,並能自動配置,下麵來做個小例子,順便解析它做了什麼工作。
0、你所需具備的基礎
- 什麼是 Spring Boot?
- Spring Boot 核心配置文件詳解
- Spring Boot 開啟的 2 種方式
- Spring Boot 自動配置原理、實戰
- Spring Boot 2.x 啟動全過程源碼分析
更多請在Java技術棧微信公眾號後臺回覆關鍵字:boot。
1、添加依賴
在 Maven pom.xml
配置文件中加入 spring-boot-starter-mail
依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、添加配置參數
然後在 application.properties
文件中加入以下配置。
spring.mail.host=smtp.exmail.qq.com
[email protected]
spring.mail.password=123456
# 啟動SSL時的配置
spring.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.smtp.socketFactory.fallback=false
spring.mail.smtp.socketFactory.port=465
3、一個簡單的發送郵件例子
寫一個控制器,寫一個簡單的發送郵件的小例子,發送成功返回 true
,發送失敗返回 false
。
@Autowired
private JavaMailSender javaMailSender;
@RequestMapping("/sendEmail")
@ResponseBody
public boolean sendEmail() {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("[email protected]");
msg.setBcc();
msg.setTo("[email protected]");
msg.setSubject("Java技術棧投稿");
msg.setText("技術分享");
try {
javaMailSender.send(msg);
} catch (MailException ex) {
System.err.println(ex.getMessage());
return false;
}
return true;
}
4、自動配置都做了什麼?
Spring Boot 發現類路徑下有這個 spring-boot-starter-mail
包和 spring.mail.host
參數就會自動配置 JavaMailSenderImpl
。
上面那些 spring.mail.xx
參數用來裝配 MailProperties
這個類。
org.springframework.boot.autoconfigure.mail.MailProperties
自動配置類:
org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration
org.springframework.boot.autoconfigure.mail.MailSenderPropertiesConfiguration
其實就是用了上面裝配的參數註冊了一個 JavaMailSenderImpl
實例而已,然後你就可以註入使用了。
本文原創首發於微信公眾號:Java技術棧(id:javastack),關註公眾號在後臺回覆 "boot" 可獲取更多,轉載請原樣保留本信息。