基於Spring Boot 傳送 mail
- 傳送簡訊需要簡訊api介面 例如雲片(連結)
- 在很多地方例如使用者註冊後的郵箱啟用,郵箱傳送驗證碼等都會應用
- 在javaEE中其實有提供專門的包用於傳送郵件,官方也有提供專門的api --JavaMail(連結)
- 在springboot 中為郵件傳送提供了專門的包
假設從qq郵箱發一封郵件到163郵箱,大致步驟如下
這個過程設計到了很多個協議
- SMTP 協議全稱為Simple Mail Transfer Protocol譯作簡單郵件傳輸協議,是一個基於TCP/IP的應用層協議
- 預設埠號 25
- 它定義了郵件客戶端軟體於SMTP伺服器之間,以及SMTP伺服器之間的通訊規則
- 簡單的來講,就是用於收發郵件的
- 而使用者登陸郵箱客戶端之後需要讀取郵件,此時就需要POP3/IMAP協議
- POP3 協議全稱為Post Office Protocol,譯作郵局協議,它定義了郵件客戶端與POP3之間的通訊規則
- IMAP 是對 OPO3 的擴充套件,功能更強,作用類似,這裡就不贅述了
具體使用(以qq郵箱為例)
- 在QQ郵箱用開啟 POP3/SMTP服務(預設關閉),在設定-->賬戶中可以檢視
- 生成授權碼
- 建立Spring Boot 專案,引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
複製程式碼
- 在配置檔案中配置基本的配置資訊
# smtp伺服器地址
spring.mail.host=smtp.qq.com
# 協議型別
spring.mail.protocol=smtp
spring.mail.username=發件郵箱
# 授權碼
spring.mail.password=使用發件郵箱生成的授權碼
spring.mail.default-encoding=UTF-8
spring.mail.port=465
# 加密工具
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
複製程式碼
- 測試傳送一個簡單郵件
@Autowired
MailSender mailSender;
@Test
public void contextLoads() {
SimpleMailMessage msg = new SimpleMailMessage();
//收件人
msg.setTo("收件人郵箱(具體郵箱地址)");
//郵件主題
msg.setSubject("這是一封測試郵件");
//發件人
msg.setFrom("發件人郵箱(具體郵箱地址)");
//郵件內容
msg.setText("hello mail!");
mailSender.send(msg);
}
複製程式碼