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

SpringBoot整合Mail發(fā)送郵件功能

 更新時(shí)間:2021年11月12日 14:51:04   作者:花傷情猶在  
我們?cè)诰W(wǎng)站上注冊(cè)賬號(hào)的時(shí)候一般需要獲取驗(yàn)證碼,而這個(gè)驗(yàn)證碼一般發(fā)送在你的手機(jī)號(hào)上還有的是發(fā)送在你的郵箱中,注冊(cè),賬號(hào)密碼…都需要用到驗(yàn)證,今天就演示一下如何用SpringBoot整合Mail發(fā)送郵箱

前言

我們?cè)诰W(wǎng)站上注冊(cè)賬號(hào)的時(shí)候一般需要獲取驗(yàn)證碼,而這個(gè)驗(yàn)證碼一般發(fā)送在你的手機(jī)號(hào)上還有的是發(fā)送在你的郵箱中,注冊(cè),賬號(hào)密碼…都需要用到驗(yàn)證,今天就演示一下如何用SpringBoot整合Mail發(fā)送郵箱。

Maven依賴

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

使用QQ郵箱演示

國(guó)內(nèi)QQ郵箱的用戶占多數(shù),所以本文以QQ郵箱作為演示。

使用QQ郵箱需要開(kāi)啟SMTP服務(wù)

QQ郵箱默認(rèn)關(guān)閉了SMTP服務(wù),所以需要我們手動(dòng)打開(kāi):

在這里插入圖片描述

配置application.properties/yml

# 應(yīng)用服務(wù) WEB 訪問(wèn)端口
server.port=8080
# 郵箱用戶名
spring.mail.username=your mail
# 授權(quán)碼
spring.mail.password=授權(quán)碼
# 郵箱主機(jī)
spring.mail.host=smtp.qq.com
# 開(kāi)啟SSL
spring.mail.properties.mail.smtp.ssl.enable=true
# 認(rèn)證
spring.mail.properties.mail.smtp.auth=true
# 開(kāi)啟SSL安全模式
spring.mail.properties.mail.smtp.starttls.enable=true
# 必須啟動(dòng)SSL安全模式
spring.mail.properties.mail.smtp.starttls.required=true
# SSL Config
# 端口
spring.mail.port=465
# 協(xié)議
spring.mail.protocol=smtp
# 默認(rèn)編碼
spring.mail.default-encoding=UTF-8
# 套接字工廠端口
spring.mail.properties.mail.smtp.socketFactory.port=465
# 套接字工廠類
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

配置好這些后,springboot會(huì)自動(dòng)幫我們配置好相關(guān)的郵件發(fā)送類。

發(fā)送普通郵件

@SpringBootTest
class Demo1ApplicationTests {

    @Autowired
    JavaMailSender javaMailSender;

    @Test
    public void sendSimpleMail() {
        // 構(gòu)建一個(gè)郵件對(duì)象
        SimpleMailMessage message = new SimpleMailMessage();
        // 設(shè)置郵件主題
        message.setSubject("這是一封測(cè)試郵件");
        // 設(shè)置郵件發(fā)送者,這個(gè)跟application.yml中設(shè)置的要一致
        message.setFrom("1926585708@qq.com");
        // 設(shè)置郵件接收者,可以有多個(gè)接收者,中間用逗號(hào)隔開(kāi),以下類似
        // message.setTo("1*****@qq.com","2*****qq.com");
        message.setTo("1926585708@qq.com");
        // 設(shè)置郵件發(fā)送日期
        message.setSentDate(new Date());
        // 設(shè)置郵件的正文
        message.setText("這是測(cè)試郵件的正文");
        // 發(fā)送郵件
        javaMailSender.send(message);
    }
}

查看郵箱:

在這里插入圖片描述

驗(yàn)證碼案例

使用thymeleaf模板搭建HTML頁(yè)面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>驗(yàn)證碼</title>
</head>
<body>

<div style="text-align: center">
    請(qǐng)輸入您的郵箱:<input id="email" type="text"> <input id="getcode" type="button" value="獲取驗(yàn)證碼"><br>
    驗(yàn)證碼:<input id="code" type="text"><br>
    <input id="check" type="button" value="驗(yàn)證"><br>
</div>

<script type="text/javascript" th:src="@{/js/jquery-3.6.0.js}"></script>
<script>
    //發(fā)送驗(yàn)證碼
    $("#getcode").click(function () {
        var btn = $("#getcode");
        var time = 30;//定義時(shí)間變量。用于倒計(jì)時(shí)用
        var timer = null;//定義一個(gè)定時(shí)器;
        timer = setInterval(function(){///開(kāi)啟定時(shí)器。函數(shù)內(nèi)執(zhí)行
            btn.disabled = true;
            btn.val(time+"秒后重新獲取");    //點(diǎn)擊發(fā)生后,按鈕的文本內(nèi)容變成之前定義好的時(shí)間值。
            time--;//時(shí)間值自減
            if(time==0){     //判斷,當(dāng)時(shí)間值小于等于0的時(shí)候
                btn.val('重新獲取驗(yàn)證碼'); //其文本內(nèi)容變成……點(diǎn)擊重新發(fā)送……
                btn.disabled = false;
                clearInterval(timer); //清除定時(shí)器
            }
        },1000)
        $.post({
            url : "/getmailcode",
            data : {"mail":$("#email").val()},
            success : function (data) {
                alert("驗(yàn)證碼已發(fā)送,請(qǐng)注意查收");
            }
        });
    })
    //檢查驗(yàn)證碼
    $("#check").click(function (){
        $.post({
            url: "/checkCode",
            data: {"code":$("#code").val()},
            success:function (data){
                if (data==0){
                    alert("驗(yàn)證碼錯(cuò)誤")
                }else {
                    alert("驗(yàn)證碼正確")
                }
            }
        })
    })
</script>
</body>
</html>

效果:

在這里插入圖片描述

定義Controller:

/**
 * 郵箱驗(yàn)證碼
 */
@Controller
public class MailCodeController {

    @Autowired
    MailUtils mailUtils;

    /**
     * 驗(yàn)證頁(yè)面
     *
     */
    @RequestMapping("/login")
    public String login(){
        return "login";
    }

    /**
     * 獲取驗(yàn)證碼
     * @param mail
     * @return
     */
    @PostMapping("/getmailcode")
    @ResponseBody
    public String getMailCode(String mail, HttpSession session){
        String mailCode = this.mailUtils.getMailCode(mail);
        System.out.println("獲取到驗(yàn)證碼:"+mailCode);
        session.setAttribute("code",mailCode);
        return "ok";
    }

    /**
     * 檢查驗(yàn)證碼
     * @param code
     * @return 1:正確 0:錯(cuò)誤
     */
    @PostMapping("/checkCode")
    @ResponseBody
    public String checkCode(String code, HttpSession session){
        String checkCode = (String) session.getAttribute("code");
        if (checkCode!=null){
            if (code.equals(checkCode)){
                return "1";
            }else {
                return "0";
            }
        }
        return "0";
    }


}

MailUtils郵箱工具類:

@Component
public class MailUtils {

    @Autowired
    private JavaMailSender mailSender;

    public String getMailCode(String mail){
        Random random = new Random();
        String code="";
        for (int i=0;i<6;i++)
        {
            code+=random.nextInt(10);
        }
        //郵件設(shè)置1:一個(gè)簡(jiǎn)單的郵件
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("驗(yàn)證碼消息");
        message.setText("您的驗(yàn)證碼為 : 【 "+code+" 】");

        message.setTo(mail);
        message.setFrom("1926585708@qq.com");
        mailSender.send(message);
        return code;
    }
}

驗(yàn)證效果:

在這里插入圖片描述

到此這篇關(guān)于SpringBoot整合Mail發(fā)送郵件的文章就介紹到這了,更多相關(guān)SpringBoot發(fā)送郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Class類的作用與深入理解

    Java中Class類的作用與深入理解

    這篇文章主要介紹了Java中Class類的作用與深入理解的相關(guān)資料,希望通過(guò)本文能幫助到大家讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Spring注解@Qualifier的使用&&與@Primary注解的不同

    Spring注解@Qualifier的使用&&與@Primary注解的不同

    今天帶你了解一下Spring框架中的@Qualifier?注解,它解決了哪些問(wèn)題,以及如何使用它,我們還將了解它與?@Primary?注解的不同之處,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Spring Boot的filter(過(guò)濾器)簡(jiǎn)單使用實(shí)例詳解

    Spring Boot的filter(過(guò)濾器)簡(jiǎn)單使用實(shí)例詳解

    過(guò)濾器(Filter)的注冊(cè)方法和 Servlet 一樣,有兩種方式:代碼注冊(cè)或者注解注冊(cè),下面通過(guò)實(shí)例給大家介紹Spring Boot的filter(過(guò)濾器)簡(jiǎn)單使用,一起看看吧
    2017-04-04
  • 解決mybatisPlus 中的field-strategy配置失效問(wèn)題

    解決mybatisPlus 中的field-strategy配置失效問(wèn)題

    這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    這篇文章主要介紹了SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java實(shí)現(xiàn)文件及文件夾的刪除

    Java實(shí)現(xiàn)文件及文件夾的刪除

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)文件及文件夾的刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • spring hibernate實(shí)現(xiàn)動(dòng)態(tài)替換表名(分表)的方法

    spring hibernate實(shí)現(xiàn)動(dòng)態(tài)替換表名(分表)的方法

    下面小編就為大家?guī)?lái)一篇spring hibernate實(shí)現(xiàn)動(dòng)態(tài)替換表名(分表)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • mybatis-xml映射文件及mybatis動(dòng)態(tài)sql詳解

    mybatis-xml映射文件及mybatis動(dòng)態(tài)sql詳解

    XML映射文件的名稱與Mapper接口名稱一致,并且將XML映射文件和Mapper接口放置在相同包下(同包同名),這篇文章主要介紹了mybatis-xml映射文件及mybatis動(dòng)態(tài)sql的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • SpringBoot中配置log4j2日志詳解

    SpringBoot中配置log4j2日志詳解

    這篇文章主要介紹了SpringBoot中配置log4j2日志詳解,Apache Log4j2 是對(duì)原先的 Log4j 項(xiàng)目的升級(jí)版本,參考了 logback 的一些優(yōu)秀的設(shè)計(jì),并且修復(fù)了一些問(wèn)題,因此帶來(lái)了一些重大的提升,需要的朋友可以參考下
    2023-11-11
  • Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java編譯器在編譯時(shí)對(duì)String的+和+=操作會(huì)創(chuàng)建StringBuilder對(duì)象來(lái)進(jìn)行字符串的拼接,下面這篇文章主要給大家介紹了關(guān)于Java中字符串String的+和+=及循環(huán)操作String原理的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

台中县| 玉田县| 延边| 墨脱县| 湖南省| 江北区| 乡城县| 嵩明县| 阆中市| 会泽县| 湘乡市| 永清县| 天祝| 墨竹工卡县| 慈溪市| 大庆市| 元氏县| 墨竹工卡县| 平顶山市| 开原市| 仁化县| 偏关县| 新乡县| 云林县| 巢湖市| 太保市| 桦甸市| 德州市| 洛南县| 信丰县| 洱源县| 上虞市| 天全县| 泾源县| 营口市| 德惠市| 商城县| 屏南县| 筠连县| 金川县| 资中县|