最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn)

 更新時間:2023年04月28日 10:37:27   作者:獅子也瘋狂  
這篇文章主要介紹了使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn),咱們今天來講使用QQ郵箱來發(fā)送和接收驗證碼,首先來介紹一下它在SpringBoot項目中的具體應用,需要的朋友可以參考下

題外話

日常生活中,咱們注冊某一個平臺或者找回密碼甚至是登錄到系統(tǒng)的時候,一般都需要注冊手機號,經(jīng)過手機號來接收驗證碼,然后完成這些需求。但是對于程序員來說,或許我們更加感興趣的是如何來實現(xiàn)它,但是一般這種經(jīng)過三大運營商的操作,都是需要付費的,所以咱們今天來講一種它的平替——使用QQ郵箱來發(fā)送和接收驗證碼。qq郵箱是咱們?nèi)粘J褂玫降募确奖阌置赓M的通訊工具之一(方便是因為日常使用微信,一般會和QQ郵箱關(guān)聯(lián))。現(xiàn)在咱們來介紹一下它在SpringBoot項目中的具體應用。

提前準備

2.1 配置郵箱第三方登錄

在系統(tǒng)中使用到的郵箱發(fā)送郵件屬于第三方登錄,需要登錄QQ郵箱配置第三方登錄。

2.1.1 點擊設(shè)置——賬戶

登錄QQ郵箱,點擊設(shè)置,跳轉(zhuǎn)后找到賬戶。

在這里插入圖片描述

在這里插入圖片描述

2.1.2 開啟POP3/SMTP服務

在賬戶那個頁面,找到下面這一欄,點擊開始就好啦。

在這里插入圖片描述

然后會讓你綁定郵箱的手機驗證一下:

在這里插入圖片描述

發(fā)送完信息,就會顯示下面的授權(quán)碼(一定要保存好,很重要),復制授權(quán)碼備用。

在這里插入圖片描述

2.2 添加依賴

回到項目,添加相關(guān)依賴,如下:

<!-- 發(fā)郵件 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

tips: Spring提供了非常好用的JavaMailSender接口實現(xiàn)郵件發(fā)送。由于SpringBoot的Starter模塊也為此提供了自動化配置,所以在引入了spring-boot-starter-mail依賴之后,會根據(jù)配置文件中的內(nèi)容去創(chuàng)建JavaMailSender實例,因此我們可以直接在需要使用的地方直接@Autowired來引入郵件發(fā)送對象。

2.3 yaml配置

在這里配置好自己的郵箱和授權(quán)碼,當然這里是自定義的,后面需要使用**@Value**獲取。

# 發(fā)送郵件配置
mail:
  # 發(fā)件人地址
  user: 23734xxxxxx@qq.com
  # 發(fā)件人授權(quán)碼
  password: pfemtwstpvkdabcd

進入主題

完成前面的步驟后,我們正式寫一個發(fā)送郵件的工具類(建議直接復制)。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * 發(fā)郵件工具類
 */
@Component
public final class MailUtils {
    @Value("${mail.user}")
    private String USER; // 發(fā)件人郵箱地址
    @Value("${mail.password}")
    private String PASSWORD; // 如果是qq郵箱可以使戶端授權(quán)碼

    /**
     * 發(fā)送郵件
     * @param to 收件人郵箱
     * @param text 郵件正文
     * @param title 標題
     */
    public boolean sendMail(String to, String text, String title){
        try {
            final Properties props = new Properties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", "smtp.qq.com");

            // 發(fā)件人的賬號
            props.put("mail.user", USER);
            //發(fā)件人的密碼
            props.put("mail.password", PASSWORD);

            // 構(gòu)建授權(quán)信息,用于進行SMTP進行身份驗證
            Authenticator authenticator = new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    // 用戶名、密碼
                    String userName = props.getProperty("mail.user");
                    String password = props.getProperty("mail.password");
                    return new PasswordAuthentication(userName, password);
                }
            };
            // 使用環(huán)境屬性和授權(quán)信息,創(chuàng)建郵件會話
            Session mailSession = Session.getInstance(props, authenticator);
            // 創(chuàng)建郵件消息
            MimeMessage message = new MimeMessage(mailSession);
            // 設(shè)置發(fā)件人
            String username = props.getProperty("mail.user");
            InternetAddress form = new InternetAddress(username);
            message.setFrom(form);

            // 設(shè)置收件人
            InternetAddress toAddress = new InternetAddress(to);
            message.setRecipient(Message.RecipientType.TO, toAddress);

            // 設(shè)置郵件標題
            message.setSubject(title);

            // 設(shè)置郵件的內(nèi)容體
            message.setContent(text, "text/html;charset=UTF-8");
            // 發(fā)送郵件
            Transport.send(message);
            return true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

}

這個工具類使用了**@Component**注解將這個工具類放入IOC容器中,需要使用的時候方便取。這個工具類只有一個方法——sendMail(String to, String text, String title),就是用來發(fā)郵件的方法,一共三個參數(shù),參數(shù)解釋如上有很詳細的解釋,這里就不多言。

測試使用

現(xiàn)在我們使用它來測試一下好不好使。

在這里插入圖片描述

在這里插入圖片描述

尾聲

3.1 安利一個生成驗證碼的工具類

3.1.1 添加依賴

<dependency>
			<groupId>com.github.penggle</groupId>
			<artifactId>kaptcha</artifactId>
			<version>2.3.2</version>
		</dependency>

3.1.2 編寫配置類

驗證碼的形式可以在下面改,這里是生成四位數(shù)字+字母的形式。

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * 生成驗證碼的配置
 */
@Configuration
public class KaptchaConfig {
    @Bean
    public Producer kaptchaProducer() {
        Properties properties = new Properties();
        //設(shè)置驗證碼的寬度
        properties.setProperty("kaptcha.image.width", "100");
        //設(shè)置寬度
        properties.setProperty("kaptcha.image.height", "40");
        //設(shè)置字體大小
        properties.setProperty("kaptcha.textproducer.font.size", "32");
        //設(shè)置字體顏色
        properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
        //限定驗證碼中的字符
        properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        //設(shè)置驗證碼的長度
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        //設(shè)置添加噪聲與否
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
        //將配置裝載到一個實例中
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        //將配置傳入實例
        defaultKaptcha.setConfig(new Config(properties));
        return defaultKaptcha;
    }
}

3.1.3 使用

	@Autowired
	private Producer checkCode;
	@Test
	void contextLoads() {
		String text = checkCode.createText();
		System.out.println(true);
	}

3.1.4 演示結(jié)果

在這里插入圖片描述

到此這篇關(guān)于使用SpringBoot發(fā)送郵箱驗證碼的簡單實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot發(fā)送郵箱驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Maven配置中repositories、distributionManagement、pluginRepositories用法及將已有jar包部署到私服

    Maven配置中repositories、distributionManagement、pluginRepositori

    這篇文章主要介紹了Maven配置中repositories、distributionManagement、pluginRepositories用法及將已有jar包部署到私服,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • springcloud項目改名的操作方法

    springcloud項目改名的操作方法

    這篇文章主要介紹了springcloud項目改名的操作方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot利用觀察者模式實現(xiàn)聯(lián)動更新機制

    SpringBoot利用觀察者模式實現(xiàn)聯(lián)動更新機制

    觀察者模式(Observer Pattern)是一種軟件設(shè)計模式,在許多應用系統(tǒng)中,我們經(jīng)常需要處理多個表之間的關(guān)聯(lián)更新問題,本文將通過一個具體的案例,介紹如何在Spring Boot項目中利用觀察者模式來優(yōu)雅地解決這一需求,需要的朋友可以參考下
    2024-07-07
  • java使用IO流對數(shù)組排序?qū)嵗v解

    java使用IO流對數(shù)組排序?qū)嵗v解

    在本篇文章里小編給大家整理的是一篇關(guān)于java使用IO流對數(shù)組排序?qū)嵗v解內(nèi)容,有興趣的朋友們可以學習下。
    2021-02-02
  • Maven deploy plugin使用方式

    Maven deploy plugin使用方式

    這篇文章主要介紹了Maven deploy plugin使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java如何根據(jù)前端返回的字段名進行查詢數(shù)據(jù)

    Java如何根據(jù)前端返回的字段名進行查詢數(shù)據(jù)

    這篇文章主要為大家詳細介紹了Java如何根據(jù)前端返回的字段名進行查詢數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • SpringMVC中DispatcherServlet的HandlerMapping詳解

    SpringMVC中DispatcherServlet的HandlerMapping詳解

    這篇文章主要介紹了SpringMVC中DispatcherServlet的HandlerMapping詳解,上回說的Handler,我們說是處理特定請求的,也就是說,不是所有的請求都能處理,那么問題來了,我們怎知道哪個請求是由哪個Handler處理的呢,需要的朋友可以參考下
    2023-10-10
  • SpringBoot整合aws的示例代碼

    SpringBoot整合aws的示例代碼

    本文通過實例代碼給大家介紹SpringBoot整合aws的全過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-12-12
  • Object類wait及notify方法原理實例解析

    Object類wait及notify方法原理實例解析

    這篇文章主要介紹了Object類wait及notify方法原理實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • java實現(xiàn)快速打字游戲

    java實現(xiàn)快速打字游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)快速打字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論

开远市| 南和县| 泗水县| 仁寿县| 特克斯县| 晴隆县| 安岳县| 吴川市| 罗城| 磐石市| 香河县| 湘乡市| 石狮市| 商南县| 都昌县| 徐水县| 马边| 旺苍县| 铅山县| 武宣县| 鄂托克旗| 新泰市| 资源县| 双流县| 杨浦区| 武安市| 文成县| 囊谦县| 平武县| 平凉市| 秦皇岛市| 社旗县| 宣化县| 驻马店市| 孟州市| 紫金县| 大宁县| 额济纳旗| 叶城县| 平阴县| 乌拉特中旗|