基於Spring Boot傳送 mail

bisnow_發表於2019-04-17

基於Spring Boot 傳送 mail

  • 傳送簡訊需要簡訊api介面 例如雲片(連結)
  • 在很多地方例如使用者註冊後的郵箱啟用,郵箱傳送驗證碼等都會應用
  • 在javaEE中其實有提供專門的包用於傳送郵件,官方也有提供專門的api --JavaMail(連結)
  • 在springboot 中為郵件傳送提供了專門的包

假設從qq郵箱發一封郵件到163郵箱,大致步驟如下

基於Spring Boot傳送 mail

這個過程設計到了很多個協議

  • 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傳送 mail

  • 生成授權碼

基於Spring Boot傳送 mail

  • 建立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);
    }
複製程式碼

相關文章