欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java集成郵箱驗證找回密碼功能全過程

 更新時間:2025年04月25日 10:19:11   作者:雪碧聊技術  
這篇文章主要給大家介紹了關于Java集成郵箱驗證找回密碼功能的相關資料,通過演示效果驗證功能的正確性,并總結了整個流程,在實際應用中還需要將驗證碼存入Redis并設置有效時間,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

1.添加依賴

<!--導入郵箱依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>3.1.5</version>
</dependency>

2.選擇一個自己的郵箱,作為發(fā)件人角色。

說白了,用戶找回密碼時,需要發(fā)件人發(fā)送給用戶郵箱一個驗證碼,那么這個發(fā)件人郵箱,需要我們自己選取。

此時我就選擇用我自己的QQ郵箱,作為發(fā)件人。

下面就需要我們去QQ郵箱,開啟POP3/SMTP服務,獲取授權碼

3.編寫郵箱配置【配置發(fā)件人郵箱】

我們在【2】中,選取了我們自己的QQ郵箱,充當發(fā)件人角色。

那么我們此時,就需要將該QQ郵箱的配置信息(包含賬號、授權碼等等),配置到Java的application.yml文件中。

配置好以后,Java就可以在需要時,自動使用我們的QQ郵箱,給忘記密碼的用戶的郵箱發(fā)送驗證碼了。

4.編寫郵箱配置類

其實【3】就夠用了,但是有時候只完成3的配置,仍然無法注入JavaMailSender的實例。

@Configuration
public class MailConfig {
    @Bean
    public JavaMailSender javaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

        // 設置QQ郵箱SMTP服務器
        mailSender.setHost("smtp.qq.com");
        mailSender.setPort(587);  // QQ郵箱默認端口587(TLS)或465(SSL)

        // 設置郵箱賬號和授權碼(注意:password是授權碼,不是QQ密碼)
        mailSender.setUsername("發(fā)件郵箱賬號");
        mailSender.setPassword("授權碼");

        // 設置編碼
        mailSender.setDefaultEncoding("UTF-8");

        // 設置SMTP協(xié)議屬性
        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.smtp.auth", "true");          // 啟用認證
        props.put("mail.smtp.starttls.enable", "true"); // 啟用TLS加密
        props.put("mail.smtp.starttls.required", "true"); // 必須使用TLS

        return mailSender;
    }
}

5.編寫controller業(yè)務代碼

由于發(fā)送郵件內容不多,所以我們就將所有代碼都寫到一個controller層即可,就不再創(chuàng)建service層了。

@RestController//表明這是一個controller層,并且自動將對象轉為JSON格式返回
@RequestMapping("/api/email")//該controller的訪問路徑
public class SendEmailController {
    @Autowired
    private JavaMailSender javaMailSender;
    @Autowired
    private UserMapper userMapper;

    //發(fā)送郵件
    @PostMapping("/sendEmail")
    public Result sendEmail(@RequestBody EmailDto emailDto){
        //1.先查找數據庫,是否存在該用戶的賬號,如果不存在,則返回錯誤信息“該賬號不存在”
        User user = userMapper.queryUserByUsername(emailDto.getUsername());
        if(user == null){
            return new Result(404, "該賬號不存在");
        }
        //2.如果該賬號存在,則判斷該郵箱是否綁定了該賬號,如果沒綁定,則返回錯誤信息“賬號與郵箱未綁定”
        if(!user.getEmail().equals(emailDto.getEmail())){
            return new Result(404, "賬號與郵箱未綁定");
        }
        //3.如果綁定了,則往該用戶的郵箱中,發(fā)送一個驗證碼(多少位自己決定,一般是6位)
        //生成6位驗證碼
        Random random = new Random();
        int code = random.nextInt(900000) + 100000;//范圍:100000-999999(6位隨機數的范圍)。
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("發(fā)件人郵箱");//設置發(fā)件人郵箱
        message.setTo(emailDto.getEmail());//設置收件人郵箱
        message.setSubject("東軟HIS系統(tǒng)驗證碼");//郵件標題
        message.setText("郵箱驗證碼為:" + code + ",請勿發(fā)送給他人");//郵件內容
        try {
            javaMailSender.send(message);
            //4.將該驗證碼存入redis,有效時間設置為2分鐘,以便后續(xù)驗證該用戶在前端輸入的驗證碼是否正確。TODO
            return new Result(200, "發(fā)送成功");
        }catch (Exception e){
            throw new RuntimeException("發(fā)送郵箱驗證碼失敗,請稍后再試");
        }
        
    }

}

6.演示效果

情況1:賬號不存在

情況2:賬號與郵箱未綁定

情況3:賬號與郵箱綁定。

可見此時我們的QQ小號的郵箱2037730735@qq.com也確實收到了這個郵箱驗證碼。

7.總結流程

①找一個自己的郵箱(QQ、163、outlook等都可以),作為發(fā)件人,并將該郵箱的信息配置到java后端

②收件人的郵箱,是從前端傳遞過來的(即:誰忘記了密碼,誰就輸入他自己的郵箱,作為驗證碼的收件人)。

③驗證碼發(fā)送成功后,應當存入redis,并設置有效時間(如:2分鐘),以便用戶在前端輸入驗證碼后,驗證正確性。

8.注意

上述發(fā)送郵箱驗證碼成功后,應當將驗證碼存入redis,我們此時還沒寫寫部分內容,稍后會完善的。

到此這篇關于Java集成郵箱驗證找回密碼功能的文章就介紹到這了,更多相關Java集成郵箱驗證找回密碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java+OpenCV調用攝像頭實現拍照功能

    Java+OpenCV調用攝像頭實現拍照功能

    隨著我們對環(huán)境、Mat基本使用越來越熟練、Java Swing也逐步熟悉了起來。本文將通過OpenCV驅動攝像頭實現識臉和拍照功能,需要的可以參考一下
    2022-03-03
  • Spring boot + mybatis + orcale實現步驟實例代碼講解

    Spring boot + mybatis + orcale實現步驟實例代碼講解

    這篇文章主要介紹了Spring boot + mybatis + orcale的實現步驟實例代碼講解,需要的朋友可以參考下
    2017-12-12
  • Spring?Boot?實現?WebSocket?的代碼示例

    Spring?Boot?實現?WebSocket?的代碼示例

    WebSocket?協(xié)議是獨立的基于?TCP?協(xié)議。它與?HTTP?的唯一關系是,它的握手會被?HTTP?服務器解釋為?Upgrade?請求,接下來通過本文給大家介紹Spring?Boot?實現?WebSocket?示例詳解,需要的朋友可以參考下
    2022-04-04
  • java如何分布式鎖實現和選型

    java如何分布式鎖實現和選型

    文章介紹了分布式鎖的重要性以及在分布式系統(tǒng)中常見的問題和需求,它詳細闡述了如何使用分布式鎖來確保數據的一致性和系統(tǒng)的高可用性,文章還提供了基于數據庫、Redis和Zookeeper的分布式鎖實現示例,分析了每種方法的優(yōu)點和缺點
    2025-01-01
  • 利用Spring Validation實現輸入驗證功能

    利用Spring Validation實現輸入驗證功能

    這篇文章主要給大家介紹了如何利用Spring Validation完美的實現輸入驗證功能,文中有詳細的代碼示例,具有一定的參考價值,感興趣的朋友可以借鑒一下
    2023-06-06
  • Java程序運行之JDK,指令javac java解讀

    Java程序運行之JDK,指令javac java解讀

    這篇文章主要介紹了Java程序運行之JDK,指令javac java,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中String.matches方法使用

    java中String.matches方法使用

    String.matches()方法用于檢測字符串是否符合特定的正則表達式,詳細介紹了如何使用String.matches()配合不同的正則表達式來匹配各種特定格式的字符串,感興趣的可以了解一下
    2024-09-09
  • Mybatis控制臺打印SQL語句的兩種方式實現

    Mybatis控制臺打印SQL語句的兩種方式實現

    這篇文章主要介紹了Mybatis控制臺打印SQL語句的兩種方式實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • java實現學生信息管理系統(tǒng)

    java實現學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • mybatis-plus查詢無數據問題及解決

    mybatis-plus查詢無數據問題及解決

    這篇文章主要介紹了mybatis-plus查詢無數據問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論