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

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

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

題外話

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

提前準(zhǔn)備

2.1 配置郵箱第三方登錄

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

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

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

在這里插入圖片描述

在這里插入圖片描述

2.1.2 開(kāi)啟POP3/SMTP服務(wù)

在賬戶那個(gè)頁(yè)面,找到下面這一欄,點(diǎn)擊開(kāi)始就好啦。

在這里插入圖片描述

然后會(huì)讓你綁定郵箱的手機(jī)驗(yàn)證一下:

在這里插入圖片描述

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

在這里插入圖片描述

2.2 添加依賴(lài)

回到項(xiàng)目,添加相關(guān)依賴(lài),如下:

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

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

2.3 yaml配置

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

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

進(jìn)入主題

完成前面的步驟后,我們正式寫(xiě)一個(gè)發(fā)送郵件的工具類(lèi)(建議直接復(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ā)郵件工具類(lèi)
 */
@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 標(biāo)題
     */
    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ā)件人的賬號(hào)
            props.put("mail.user", USER);
            //發(fā)件人的密碼
            props.put("mail.password", PASSWORD);

            // 構(gòu)建授權(quán)信息,用于進(jìn)行SMTP進(jìn)行身份驗(yàn)證
            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)建郵件會(huì)話
            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è)置郵件標(biāo)題
            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;
    }

}

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

測(cè)試使用

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

在這里插入圖片描述

在這里插入圖片描述

尾聲

3.1 安利一個(gè)生成驗(yàn)證碼的工具類(lèi)

3.1.1 添加依賴(lài)

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

3.1.2 編寫(xiě)配置類(lèi)

驗(yàn)證碼的形式可以在下面改,這里是生成四位數(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;

/**
 * 生成驗(yàn)證碼的配置
 */
@Configuration
public class KaptchaConfig {
    @Bean
    public Producer kaptchaProducer() {
        Properties properties = new Properties();
        //設(shè)置驗(yàn)證碼的寬度
        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");
        //限定驗(yàn)證碼中的字符
        properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        //設(shè)置驗(yàn)證碼的長(zhǎng)度
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        //設(shè)置添加噪聲與否
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
        //將配置裝載到一個(gè)實(shí)例中
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        //將配置傳入實(shí)例
        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ā)送郵箱驗(yàn)證碼的簡(jiǎn)單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot發(fā)送郵箱驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+Mybatis plus實(shí)現(xiàn)多數(shù)據(jù)源整合的實(shí)踐

    SpringBoot+Mybatis plus實(shí)現(xiàn)多數(shù)據(jù)源整合的實(shí)踐

    本文主要介紹了SpringBoot+Mybatis plus實(shí)現(xiàn)多數(shù)據(jù)源整合的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JAVA寶藏工具h(yuǎn)utool的使用

    JAVA寶藏工具h(yuǎn)utool的使用

    開(kāi)發(fā)過(guò)程中總是會(huì)遇到需要自己自定義工具類(lèi)的情況,做一些數(shù)據(jù)轉(zhuǎn)換、字符串操作、日期處理、加解密、編解碼、金額計(jì)算等,本文就詳細(xì)的介紹有一個(gè)工具類(lèi)hutool的使用,感興趣的可以了解一下
    2021-10-10
  • Mybatis-Plus通過(guò)SQL注入器實(shí)現(xiàn)批量插入的實(shí)踐

    Mybatis-Plus通過(guò)SQL注入器實(shí)現(xiàn)批量插入的實(shí)踐

    本文主要介紹了Mybatis-Plus通過(guò)SQL注入器實(shí)現(xiàn)批量插入的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java超詳細(xì)透徹講解static

    Java超詳細(xì)透徹講解static

    static關(guān)鍵字基本概念我們可以一句話來(lái)概括:方便在沒(méi)有創(chuàng)建對(duì)象的情況下來(lái)進(jìn)行調(diào)用。也就是說(shuō):被static關(guān)鍵字修飾的不需要?jiǎng)?chuàng)建對(duì)象去調(diào)用,直接根據(jù)類(lèi)名就可以去訪問(wèn),讓我們來(lái)了解一下你可能還不知道情況
    2022-05-05
  • Golang Protocol Buffer案例詳解

    Golang Protocol Buffer案例詳解

    這篇文章主要介紹了Golang Protocol Buffer案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java實(shí)現(xiàn)砸金蛋抽獎(jiǎng)功能

    java實(shí)現(xiàn)砸金蛋抽獎(jiǎng)功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)砸金蛋抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 淺談JVM內(nèi)存溢出的幾種方式與解決方法

    淺談JVM內(nèi)存溢出的幾種方式與解決方法

    內(nèi)存溢出分為兩大類(lèi):OutOfMemoryError和StackOverflowError,以下舉出10個(gè)內(nèi)存溢出的情況,并通過(guò)實(shí)例代碼的方式講解了是如何出現(xiàn)內(nèi)存溢出的,感興趣的可以了解一下
    2024-01-01
  • Windows中在IDEA上安裝和使用JetBrains Mono字體的教程

    Windows中在IDEA上安裝和使用JetBrains Mono字體的教程

    這篇文章主要介紹了Windows IDEA上安裝和使用JetBrains Mono字體的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程

    SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程

    Swagger2是一個(gè)開(kāi)源項(xiàng)目,用于為RESTful Web服務(wù)生成REST API文檔,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • SpringBoot中的multipartResolver上傳文件配置

    SpringBoot中的multipartResolver上傳文件配置

    這篇文章主要介紹了SpringBoot中的multipartResolver上傳文件配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評(píng)論