序
在實際專案中,經常需要用到郵件通知功能。比如,使用者通過郵件註冊,通過郵件找回密碼等;又比如通過郵件傳送系統情況,通過郵件傳送報表資訊等等,實際應用場景很多。
原文地址:https://www.mmzsblog.cn/articles/2020/07/28/1595865811262.html
正常我們會用 JavaMail 相關 api 來寫傳送郵件的相關程式碼,但現在 SpringBoot 提供了一套更簡易使用的封裝。這篇文章,阿淼就帶大家通過 SpringBoot 快速的實現傳送郵件的功能。
1、開啟smtp
這裡以 163 郵箱為例。登入 163 郵箱之後,點選設定,如下圖:
1.1、登入郵箱-設定
獲取 spring.mail.password
授權碼:
1.2、開啟IMAP/SMTP服務,根據提示走獲取授權碼
這個授權碼,就是傳送郵件時需要的密碼。
1.3、下方有服務地址SMTP伺服器:smtp.163.com就是我們要的
以上步驟完成之後,就可以開始開發了。
2、新建 maven 專案
3、 pom
檔案中所涉及的依賴包
匯入 SpringBoot 父依賴版本為 2.02
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
匯入 web
和 mail
郵件相關依賴包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
4、配置檔案
配置檔案中引數的獲取,最後介紹。
server:
port: 8082
spring:
http:
encoding:
# 編碼集
charset: utf-8
enabled: true
mail:
default-encoding: UTF-8
#傳送郵件的賬戶
username: xxxxxxx@qq.com
# 授權碼(獲取方式前文已描述)
password: xxxxxxyyyyyy
# (郵箱伺服器地址,獲取方式前文已描述)
# 163 郵箱是smtp.163.com
# qq郵箱則為smtp.qq.com
host: smtp.163.com
properties:
mail:
smtp:
ssl:
enable: true
5、傳送類實現
Spring Email 抽象的核心是 MailSender 介面,MailSender 的實現能夠把 Email 傳送給郵件伺服器,由郵件伺服器實現郵件傳送的功能。
Spring 自帶了一個 MailSender 的實現 JavaMailSenderImpl
,它會使用 JavaMail API
來傳送 Email。後來 spring 推出
JavaMailSender 進一步簡化郵件傳送的過程,然後 SpringBoot
對此進行了封裝,就有了
現在的 spring-boot-starter-mail
。
接下來,阿淼和大家一起通過例項看看如何在 SpringBoot 中使用 JavaMailSenderImpl
傳送郵件。
簡單訊息郵件:
@Resource
private JavaMailSenderImpl javaMailSenderImpl;
public void sendSimpleMail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
// 設定郵件主題
simpleMailMessage.setSubject("賬號啟用");
// 設定要傳送的郵件內容
simpleMailMessage.setText("hello!");
// 要傳送的目標郵箱
simpleMailMessage.setTo("yyyyyyyyyy@163.com");
// 傳送者郵箱和配置檔案中的郵箱一致
simpleMailMessage.setFrom("xxxxxxxx@qq.com");
javaMailSenderImpl.send(simpleMailMessage);
}
複雜訊息郵件:
@Resource
private JavaMailSenderImpl javaMailSenderImpl;
public void sendMimeMail() {
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
try {
// 開啟檔案上傳
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 設定檔案主題
mimeMessageHelper.setSubject("賬號啟用");
// 設定檔案內容 第二個引數設定是否支援html
mimeMessageHelper.setText("<b style='color:red'>賬號啟用,請點選我</b>", true);
// 設定傳送到的郵箱
mimeMessageHelper.setTo("yyyyyyyyyy@163.com");
// 設定傳送人和配置檔案中郵箱一致
mimeMessageHelper.setFrom("xxxxxxxx@qq.com");
// 上傳附件
// mimeMessageHelper.addAttachment("", new File(""));
} catch (MessagingException e) {
e.printStackTrace();
}
javaMailSenderImpl.send(mimeMessage);
}
6、 Controller
類
@RestController
public class SendMailController {
@Resource
private SendMail sendMail;
@GetMapping("/sendSimpleMail")
public void sendSimpleMail() {
sendMail.sendSimpleMail();
}
@GetMapping("/sendMimeMail")
public void sendMimeMail() {
sendMail.sendMimeMail();
}
}
7、測試
7.1、簡單郵件
利用 postman 傳送請求:
檢視郵箱結果:
7.2、複雜郵件
利用 postman 傳送請求:
檢視郵箱結果:
從結果可以看出,我們設定的 <b style='color:red'>賬號啟用,請點選我</b>
字型樣式已經展示出效果了!
參考 :https://www.cnblogs.com/jmcui/p/9758442.html