网站开发可以入无形资产吗,记事本做网站怎么加背景图,云南省建设工程信息网官网,合肥市建设工程市场信息价网站目录
1、开启邮箱IMAP/SMTP服务#xff0c;获取授权码
2、相关代码 1、使用配置Redis#xff08;用于存储验证码#xff0c;具有时效性#xff09; 2、邮箱依赖和hutool#xff08;用于随机生成验证码#xff09; 3、配置Redis和邮箱信息 4、开启Redis服务 5、编写发送…目录
1、开启邮箱IMAP/SMTP服务获取授权码
2、相关代码 1、使用配置Redis用于存储验证码具有时效性 2、邮箱依赖和hutool用于随机生成验证码 3、配置Redis和邮箱信息 4、开启Redis服务 5、编写发送邮箱验证码 6、邮箱登录验证功能
3、测试 1、开启邮箱IMAP/SMTP服务获取授权码 1、登录邮箱以qq邮箱为例点击邮箱右上角邮箱-设置-常规-第三方服务会有如下选项 2、点击生成授权码这边已经开启IMAP/SMTP服务未开启的要先设置为开启之后根据指示可以拿到一串由邮箱服务器提供的专属于自己的授权码用于在Java代码中连接邮箱
2、相关代码 1、使用配置Redis用于存储验证码具有时效性 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency 2、邮箱依赖和hutool用于随机生成验证码 !-- 邮箱验证码依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId/dependency!-- 一个很强大的工具库 --dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.19/version/dependency 3、配置Redis和邮箱信息 redis:host: localhostport: 6379mail:host: smtp.qq.comprotocol: smtpdefault-encoding: UTF-8username: 【这里填发件人邮箱可以是你自己的】password: 【这里填刚刚从邮箱网站中拿到的授权码注意不是自己的邮箱密码】nickname: 【发件人自命名】properties:mail.smtp.auth: true #启用SMTP服务器的身份验证这是为了确保只有合法用户可以发送邮件。mail.smtp.starttls.enable: #启用TLS加密这是为了确保邮件传输的安全性。mail.smtp.starttls.required: true #要求使用TLS加密如果连接不是通过TLS加密传输则连接将失败。 4、开启Redis服务 这里以windows作为举例 5、编写发送邮箱验证码
import cn.hutool.core.util.RandomUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;RestController
RequestMapping(/email)
public class EmailController {Autowiredprivate JavaMailSender javaMailSender;Autowiredprivate RedisTemplate redisTemplate;Value(${spring.mail.username})private String sender;Value(${spring.mail.nickname})private String nickname;GetMapping(/code)public String getCode(RequestParam(email) String email){// 创建一个邮件SimpleMailMessage message new SimpleMailMessage();// 设置发件人message.setFrom(nicknamesender);// 设置收件人message.setTo(email);// 设置邮件主题message.setSubject(欢迎访问nickname);//生成六位随机数String code RandomUtil.randomNumbers(6);//将验证码存入redis有效期为5分钟redisTemplate.opsForValue().set(email_code_email, code, 300000, TimeUnit.MILLISECONDS);String content 【验证码】您的验证码为 code 。 验证码五分钟内有效逾期作废。\n\n\n ------------------------------\n\n\n ;message.setText(content);// 发送邮件javaMailSender.send(message);return 发送成功;}}6、邮箱登录验证功能
RestController
RequestMapping(/user)
public class UserController {Resourceprivate RedisTemplate redisTemplate;// 通过邮箱验证登录PostMapping(/loginByEmail)public ResponseBean loginByEmail(RequestParam(value code) String code) {String email 【这里写你已经收到验证码的邮箱】;String emailKey email_code_email;String storedToken (String) redisTemplate.opsForValue().get(emailKey);if(code.equals(storedToken)){return ResponseBean.success(验证成功,null);}else {return ResponseBean.error(验证失败);}}}3、测试 成功接收到来自发送方的验证码
再进行邮箱登录测试 检查Redis服务器存储情况