SpirngBoot後臺使用QQ郵箱傳送驗證碼實現全過程

2020-10-25 08:00:30

SpirngBoot後臺使用QQ郵箱傳送驗證碼

在學校自己搞專案的時候想多搞點功能,簡訊驗證碼又要收費,所以搞個白嫖郵箱驗證哈哈哈哈
而在百度查資料的時候,發現大佬們都喜歡只給一兩句關鍵程式碼,這讓我這種菜鳥就比較為難,
所以我自己不斷一點點百度並整理了這份資料,並且自己也將功能實現了,在此分享給大家,這也是我第一次釋出文章,若有不合理處還望指出

------------------------------分割線-------------------------------------------------
整體思路:
a.功能:我做的是一個忘記密碼的功能,
b.過程:在後臺接收到前端傳遞的郵箱地址,並生成一個6位數的亂數,通過JavaMailSender類程式碼,使用自己的郵箱傳送驗證碼到客戶郵箱,並將驗證碼傳遞到前端進行判斷

----------------------------------程式碼實際操作------------------------------------

1.引入jar包

<!--引入傳送郵件驗證的依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2.設定yml檔案

mail:
host: smtp.qq.com #郵箱伺服器地址
username: xxxx@qq.com  #郵箱賬號
password: ****** #授權碼,在QQ郵箱設定中獲取,後面有圖片講解
default-encoding: UTF-8 #預設編碼
properties: #安全設定
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
protocol: smtp

3.設定賬號,在QQ郵箱中 設定-賬號(必須要設定!其他郵箱的話,可以去找一下百度開啟這些設定)
在這裡插入圖片描述


4.編寫業務層,service介面

//郵箱驗證,email是接收使用者輸入的郵箱號,contents是傳入自己生成的亂數
void emailSend(String email,String contents) throws MessagingException;

5.編寫service實現類

//注入方法
@Autowired
private JavaMailSender javaMailSender;

public void emailSend(String email,String contents) throws MessagingException {
    SimpleMailMessage message = new SimpleMailMessage();
    //這個方法無法直接從引數中取值,需要接收後賦值
    String to=email;
    String content=contents;
    message.setFrom("填寫你的郵箱地址");//傳送的
    message.setTo(to);
    message.setSubject("十一啊郵箱驗證登入");
    message.setText(content);
    javaMailSender.send(message);
}

6.controller層的驗證

//忘記密碼的郵箱驗證
@GetMapping("/emailVF")
public Map<String,Object> emailvf(@PathParam("email")String email){
    Map<String,Object> map = new HashMap<String,Object>();
    //生成隨機驗證碼
    int i = (int) ((Math.random() * 9 + 1) * 100000);
    String contents="您本次的驗證碼為:"+i;
    try {
    userService.emailSend(email,contents);
    map.put("success",true);
    map.put("msg","郵件傳送成功!");
    map.put("emailInfo",i);//把生成的驗證碼傳遞到前端進行判斷
} catch (Exception e) {
    map = new JudegeData().anomaly();//自定義方法判斷
    e.printStackTrace();
}
    return map;
}

這就是整個後臺功能的實現了,如果有什麼問題,歡迎在評論裡留言!