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邮箱开通一下

在这里插入图片描述

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>

结果

redis和邮箱

页面

总结

到此这篇关于springboot整合redis实现发送邮箱并验证的文章就介绍到这了,更多相关springboot redis发送邮箱内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 springboot整合redis实现发送邮箱并验证 的全部内容, 来源链接: utcz.com/p/251959.html

回到顶部