1.需求分析
- 在web项目中,通常会用到注册登录功能,在采用邮箱注册的时候,需要发送验证码给注册的 用户,如何在springboot项目中实现。
2.导入依赖
springboot版本:2.5.5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- hutool工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.8</version>
</dependency>
<!-- 邮件依赖-->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
3.编写邮件配置
在classpath(在标准Maven项目中为src/main/resources)的config目录下新建mail.setting文件,最小配置内容如下,在此配置下,smtp服务器和用户名都将通过from参数识别:
#发件人(必须正确,否则发送失败)
from = jansonzdh@163.com
#密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)此处用的是授权码,生成方式如下所示:
pass = KGNYZYIYXPIXZMAL
4.编写测试类,测试发送邮件
log.info("***********验证码生成中!**********************");
String code = RandomUtil.randomNumbers(4);
log.info("***********验证码生成结束!**********************");
log.info("***********邮件发送开始!**********************");
// 采用hutool包下的工具类 MailUtil,发送邮件
MailUtil.send("zhangdh@vhengdata.com","验证码", "您的验证码是:"+code, false);
log.info("***********邮件发送成功!**********************");
4.1 执行结果
4.2 查看邮件
已经发送成功:
5、总结
- 在具体应用过程中,我们发送验证码的同时,将验证码存储在redis缓存中,并设置过期时间为 1分钟;
- 用户在接收到验证码后,输入验证码,系统就可以从redis缓存中,查询数据,进行比对,完成验证过程。