springboot整合redis实现发送邮箱并验证

网友投稿 279 2022-11-10

springboot整合redis实现发送邮箱并验证

目录1.起步2.工具类邮箱工具类redis乱码解决3.controller搭建4.前端搭建结果总结

1.起步

pom文件

org.springframework.boot

spring-boot-starter-redis

1.4.1.RELEASE

org.springframework.boot

spring-boot-starter-mail

下面是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")

http:// public RedisTemplate redisTemplate(RedisConnectionFactory factory) {

RedisTemplate template = new RedisTemplate<>();

RedisSerializer redisSerializer = new StringRedisSerializer();

template.setConnectionFactory(factory);

//key序列化方式

template.setKeySerializer(redisSerializer);

//value序列化

templahttp://te.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 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.前端搭建

接收方邮箱号

验证码

结果

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SHell编程之Expect免交互
下一篇:英创信息技术新CAN驱动接口调用方法及说明
相关文章

 发表评论

暂时没有评论,来抢沙发吧~