中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用springboot整合redis實現發送郵箱并驗證

發布時間:2022-01-03 09:49:15 來源:億速云 閱讀:439 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何使用springboot整合redis實現發送郵箱并驗證”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用springboot整合redis實現發送郵箱并驗證”這篇文章吧。

1.起步

pom文件

  <!--集成redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.4.1.RELEASE</version>
        </dependency>
        <!--郵箱-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

下面是yml配置

#設置端口號
server:
  port: 8080
#配置數據源
spring:
  mail:
    #QQ郵箱這不用改
    host: smtp.qq.com
    #你的郵箱
    username: XX@qq.com
    #你的授權碼
    password: XXXXXX
    default-encoding: UTF-8
  redis:
    #redis服務器地址
    host: XXXXXX
    #Redis服務器連接端口
    port: 6379
    #Redis服務器連接密碼(默認為空)
    password: XXX
    jedis:
      pool:
        #連接池最大阻塞等待時間(使用負值表示沒有限制)
        max-wait: 1000
        #連接池最大連接數(使用負值表示沒有限制)
        max-active: 100
        #連接池中的最大空閑連接
        max-idle: 20
        #連接池中的最小空閑連接
        min-idle: 0
        #連接超時時間(毫秒)
    timeout: 30000
郵箱授權碼不知道的話QQ郵箱開通一下

如何使用springboot整合redis實現發送郵箱并驗證

2.工具類

郵箱工具類

package com.example.demo.util;

/**
 * @Classname MailServiceUtils
 * @Description TODO
 * @Author 86176
 * @Date 2021-12-17 15:04
 * @Version 1.0
 **/
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
@Component
public class MailServiceUtils{
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @Autowired
    private JavaMailSender mailSender;
    /**
     * @param from 發送人
     * @param to 接收人
     * @param subject 主題
     * @param content 內容
     */
    public void sendMail(String from,String to, String subject, String content){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(content);
        try {
            mailSender.send(message); logger.info("郵件成功發送!");
        } catch (MailException e) {
            logger.error("發送郵件錯誤:",e);
        }
    }
}

redis亂碼解決

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @Classname Redisconfig
 * @Description TODO
 * @Author 86176
 * @Date 2021-12-06 10:02
 * @Version 1.0
 **/
@Configuration
public class Redisconfig {


    @Bean(name="redisTemplate")
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, String> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        template.setConnectionFactory(factory);
        //key序列化方式
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(redisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(redisSerializer);
        //key haspmap序列化
        template.setHashKeySerializer(redisSerializer);
        //
        return template;
    }
}

3.controller搭建

按要求更改

package com.example.demo.controller;

import com.example.demo.util.MailServiceUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @Classname EmailController
 * @Description TODO  郵箱發送
 * @Author 86176
 * @Date 2021-12-17 15:28
 * @Version 1.0
 **/
@Controller
public class EmailController {

    @Resource
    private MailServiceUtils mailServiceUtils;

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 發送驗證碼 redis存儲驗證碼
     * @param to 被發送的郵箱賬號
     * @return
     */
    @PostMapping("/fasong")
    @ResponseBody
    public String email(String to) {
        try {
            //生成6位隨機數
            String i = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
            //發送郵箱
            mailServiceUtils.sendMail("XXXXXX@qq.com", to, "驗證碼", i);
            //redis保存驗證碼
            redisTemplate.opsForValue().set(to, i);
        } catch (Exception e) {
            return "報錯";
        }
        return "OK";
    }

    /**
     * 郵箱驗證
     * @param to 被發送的郵箱賬號
     * @param yzm 輸入的驗證碼判斷
     * @return
     */
    @PostMapping("/yz")
    @ResponseBody
    public String yz(String to, String yzm) {
        //根據郵箱帳號取出驗證碼
        String o = (String) redisTemplate.opsForValue().get(to);
        if (o.equals(yzm)){
            return "OK";
        }
        return "No";
    }

    @RequestMapping("/abc")
    public String abc() {
        return "QQemail";
    }
}

4.前端搭建

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
     <div>
         接收方郵箱號 <input type="text" id="to">
         <input type="button" value="發送驗證碼" id="yzm">
         驗證碼<input type="text" id="yz">
         <input type="submit" value="驗證" id="y">
     </div>
<script type="text/javascript"  src="../static/jquery-1.8.3.js"></script>
<script>
    /**
     * 發送驗證碼
     */
    $("#yzm").click(function() {
        $.ajax({
            url : "/fasong",
            type : "post",
            data : {
                "to":$("#to").val()
            },
            success : function(data) {
                alert(data)
            }
        })
    })
    /**
     * 驗證碼判斷
     */
    $("#y").click(function() {
        $.ajax({
            url: "/yz",
            type: "post",
            data: {
                "to": $("#to").val(),
                "yzm": $("#yz").val()
            },
            success: function (data) {
                alert(data)
            }
        })
    })
</script>
</body>
</html>

結果

如何使用springboot整合redis實現發送郵箱并驗證

如何使用springboot整合redis實現發送郵箱并驗證

以上是“如何使用springboot整合redis實現發送郵箱并驗證”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岱山县| 海城市| 顺昌县| 剑阁县| 宜君县| 长葛市| 武乡县| 措美县| 依安县| 前郭尔| 郧西县| 固原市| 怀宁县| 天门市| 神木县| 黔南| 东丰县| 大邑县| 临西县| 炎陵县| 安阳市| 汉寿县| 衡山县| 乐都县| 望谟县| 南川市| 定兴县| 鲁山县| 陵水| 夏邑县| 道真| 德昌县| 锦州市| 六枝特区| 尚义县| 马龙县| 泗洪县| 稷山县| 望谟县| 双城市| 仙桃市|