1. 程式人生 > >1 分鐘教會你用 Spring Boot 發郵件

1 分鐘教會你用 Spring Boot 發郵件

als type bec sls 公眾 username pin onf set

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 實例而已,然後你就可以註入使用了。

1 分鐘教會你用 Spring Boot 發郵件