1. 程式人生 > >SpringBoot傳送郵件

SpringBoot傳送郵件

1.實用idea 新建一個springboot 專案

2.在專案的maven 依賴中新增如下 依賴

<dependency>  
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency> 

3.在application.properties 中新增 郵箱傳送賬號的資訊

spring.mail.host="smtp.163.com" 

spring.mail.username=郵箱賬號    #傳送方的郵箱
spring.mail.password=驗證碼或者授權碼
spring.mail.properties.mail.smtp.auth=true  
spring.mail.properties.mail.smtp.starttls.enable=true  
spring.mail.properties.mail.smtp.starttls.required=true 

第三部挺鬧心的,配置的時候要小心一點,一開始實用的是qq的郵箱,使用的是qq郵箱的使用總是報錯誤。

Could not connect to SMTP host: smtp.qq.com, port: 25;

後來查到是因為埠不對 ,埠程式設計465了,後來改了一下還是不對,最後直接放棄了。這裡面應該有什麼地方沒設定好,好了,就先不管了,轉戰網易郵箱,親測有效。

目前網易郵箱個qq郵箱的配置都是使用授權碼了,不是密碼,這個要稍微區別一下。 所以上面的spring.mail.password不要填寫郵箱的登入密碼

先到郵箱的設定

在這裡插入圖片描述

首先檢視的是smtp 協議有沒有開啟

在這裡插入圖片描述

開啟以後 再點選客戶端授權密碼

在這裡插入圖片描述

網易郵箱比較好的地方在於可以自定義授權碼,而qq郵箱的授權碼是隨機生成的

4.程式碼

配置一切都ok以後,下面就是上程式碼了,這個相對是比價簡單的

新建一個Control 在裡面寫上如下程式碼


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class Test {

    @Autowired
    JavaMailSender jms;

    @GetMapping("/send")
    public String send(){
        //建立郵件訊息
        SimpleMailMessage mainMessage = new SimpleMailMessage();
        //傳送者
        mainMessage.setFrom("配置檔案的郵箱賬號@163.com");
        //接收者
        mainMessage.setTo("接收人");
        //傳送的標題
        mainMessage.setSubject("測試標題");
        //傳送的內容
        mainMessage.setText("這個是測試的內容");
        jms.send(mainMessage);
        return "ok";
    }

}

等介面返回ok 後,登入到郵箱看下

在這裡插入圖片描述

一切都是ok 的