1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 实现邮箱发送验证码功能

实现邮箱发送验证码功能

时间:2018-07-11 20:05:48

相关推荐

实现邮箱发送验证码功能

邮箱验证步骤

本文使用了redis数据库做验证码的缓存,不想用redis数据库也可以直接将验证码放入mysql中,设置验证码有效期即可。

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

application.yaml

【用yaml在后面注入JavaMailSender的bean时会爆红但不会影响运行,因为JavaMailSenderImpl在初始加载时是要读取properties,不读取yaml,但运行后就会读取了】

spring:mail:# 163邮箱的地址为,直接填写即可host: # 你申请的163邮箱username: xxxxxx@# 注意密码是在开启smtp/pop3时自动生成的,不是邮箱密码,记得保存一下,不然就找不到了password: xxxxxxxxxxx

放入静态资源,创建相应的controller

此处省略一万字~~~

编写service接口,以及其实现类(接口和controller自己想)

@Servicepublic class VerifyServiceImpl implements VerifyService {@ResourceJavaMailSender sender; //一个用于发送邮箱的类@ResourceStringRedisTemplate template; //用于Redis数据库操作@Value("${spring.mail.username}")String email;@Overridepublic void sendVerifyCode(String mail) {SimpleMailMessage message = new SimpleMailMessage();//邮件标题message.setSubject("【xxx网站】您的注册码");//设置随机数作为验证码Random random = new Random();int code = random.nextInt(89999) + 10000;//小心机//用redis保存验证码//提前验证一下,如果发送了多次则删除上一次的验证码,保留最新的验证码if (template.opsForValue().get("verify:code:"+mail)!=null){template.delete("verify:code:"+mail);}template.opsForValue().set("verify:code:"+mail,code+"",5, TimeUnit.MINUTES);//设置五分钟过期时间//邮件内容message.setText("您的验证码是:"+code+",五分钟有效,请及时完成注册。若不是本人操作请忽略");message.setFrom(email); //谁发送,必须和yaml文件中的账号一致message.setTo(mail); //谁接收sender.send(message);}@Overridepublic boolean doVerify(String mail, String code) {String string = template.opsForValue().get("verify:code:"+mail);if (string.equals(code)){template.delete("verify:code:"+mail);return true;}return false;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。