• springboot实现发送邮箱验证码


    准备工作

    在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件

    这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:HMASDWFASCZSMTAS,一定要记下来,一会会用到


    实现步骤 

    第一步、在pom.xml中添加邮箱依赖

    1. org.springframework.boot
    2. spring-boot-starter-mail

    第二步、在application.yml中配置邮箱连接信息

    1. spring:
    2. mail:
    3. #smtp服务主机 qq邮箱则为smtp.qq.com;163邮箱是smtp.163.com
    4. host: smtp.163.com
    5. #服务协议
    6. protocol: smtp
    7. # 编码集
    8. default-encoding: UTF-8
    9. #发送邮件的账户
    10. username: ************@163.com
    11. #授权码
    12. password: ****************
    13. test-connection: true
    14. properties:
    15. mail:
    16. smtp:
    17. auth: true
    18. starttls:
    19. enable: true
    20. required: true

    第三步、新建一个工具类,用于生成6位数的随机数

    1. /**
    2. * 字符处理工具
    3. */
    4. public class CharUtil {
    5. /**
    6. * 随机数6位生成
    7. * @return
    8. */
    9. public static String randomVerify () {
    10. Random random = new Random();
    11. String result = "";
    12. for (int i=0; i<6; i++)
    13. {
    14. result += random.nextInt(10);
    15. }
    16. return result;
    17. }
    18. }

    第四步、新建一个controller接口类(核心)即可实现发送邮件

    1. @RestController
    2. @RequestMapping("/mail")
    3. public class MailVerifyController {
    4. @Autowired
    5. private JavaMailSender mailSender;
    6. // 获得发件人信息
    7. @Value("${spring.mail.username}")
    8. private String from;
    9. /**
    10. * 发送邮件验证码
    11. * @param mail 发送的邮箱
    12. * @return
    13. */
    14. @PostMapping("/send")
    15. public Result save(@RequestParam String mail) {
    16. // 获取随机6位验证码
    17. String verify = CharUtil.randomVerify();
    18. SimpleMailMessage message = new SimpleMailMessage();
    19. // 发送邮箱
    20. message.setFrom(from);
    21. // 接受邮箱
    22. message.setTo(mail);
    23. // 标题
    24. message.setSubject("测试服务平台-邮箱验证");
    25. // 内容
    26. message.setText("

      尊敬的用户您好:


      "
      +
    27. "
      您正在进行邮箱验证,本次验证码为:" + verify + ",请在10分钟内进行使用。
      "
      +
    28. "
      如非本人操作,请忽略此邮件,由此给您带来的不便请谅解!
      --测试服务平台
      "
      );
    29. try{
    30. // 发送邮件
    31. mailSender.send(message);
    32. return Result.success(200,"验证码发送成功");
    33. } catch (Exception e) {
    34. return Result.success(404,"验证码系统发送失败,请检查邮箱账号是否正确!",e);
    35. }
    36. }
    37. }

    效果图 

     

  • 相关阅读:
    Mac M1安装ROS1或ROS2
    李春葆、严蔚敏关于KMP算法的next数组值差1
    转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践
    【设计模式】观察者模式(行为型)⭐⭐⭐
    gorm-增删改查
    什么是NoSQL?什么是redis?redis是做什么的?
    MyBatis——表的关联关系,事务,ORM,缓存机制
    【CV】第 9 章:使用多任务深度学习的动作识别
    【前端笔记】SCSS学习篇之一:基础入门
    Java进阶(十五)XML、XML解析、设计模式
  • 原文地址:https://blog.csdn.net/weixin_42966151/article/details/133141894