当前位置:   article > 正文

SpringBoot实现发邮箱验证码简单实现_springboot发送邮箱验证码

springboot发送邮箱验证码

一、maven导入依赖

  1. <dependency>
  2. <groupId>javax.mail</groupId>
  3. <artifactId>mail</artifactId>
  4. <version>1.4.7</version>
  5. </dependency>

二、配置yml文件配置

  1. spring:
  2. mail:
  3. host: smtp.qq.com
  4. username: XXXXX@qq.com
  5. password: //这里的密码并不是邮箱密码,而是需要开启POP3/IMAP/SMTP/Exchange/CardDAV 服务
  6. port: 587 //端口号
  7. default-encoding: UTF-8
  8. properties:
  9. mail:
  10. smtp:
  11. socketFactoryClass: javax.net.ssl.SSLSocketFactory
  12. debug: true

三、以qq邮箱为例开启POP3/IMAP/SMTP/Exchange/CardDAV 服务

进入qq邮箱点击设置->账户,如下图:

下滑看到POP3/IMAP/SMTP/Exchange/CardDAV 服务,点击开启,如下图:

通过绑定的手机进行验证,会得到一串字符串,将该字符串复制到配置文件的password后即可。注:开启服务并不是永久有效,在一定时间后程序报错,是因为时效过期,需重新申请。

三、发送邮箱验证码代码实现

发生文本邮箱:

  1. public void sendSimpleMail(String code,String touser) {
  2. // 构建一个邮件对象
  3. SimpleMailMessage message = new SimpleMailMessage();
  4. // 设置邮件主题
  5. message.setSubject("邮箱注册码");
  6. // 设置邮件发送者,这个跟application.yml中设置的要一致 username:
  7. message.setFrom(username);
  8. // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
  9. // message.setTo("10@qq.com","12qq.com");
  10. message.setTo(touser);
  11. // 设置邮件发送日期
  12. message.setSentDate(new Date());
  13. // 设置邮件的正文
  14. message.setText("邮箱注册码:" + code);
  15. // 发送邮件
  16. javaMailSender.send(message);
  17. }

调用方法

  1. @ResponseBody
  2. @PostMapping(value = "/sendCode")
  3. @CrossOrigin
  4. public Response sendCode(@RequestParam String touser, HttpServletRequest request) {
  5. try {
  6. int code = (int)((Math.random()*9+1)*1000);
  7. sendSimpleMail(code+"",touser);
  8. return Response.success(code);
  9. } catch (Exception e) {
  10. return Response.error();
  11. }
  12. }

四、说明

一般邮箱验证码有时效性,后续注册账户时,生成的验证码需使用redis保存,并设置时效性。后续用户点击注册时,从redis中去拿验证码去校验即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/686387
推荐阅读
相关标签
  

闽ICP备14008679号