• 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. }

    效果图 

     

  • 相关阅读:
    大模型训练为什么用A100不用4090
    Java:Springboot和React中枚举值(数据字典)的使用
    Java LeetCode算法编程及面试教程
    【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验
    el-menu-item使用自定义图标、使用图片做图标
    nodejs+vue电子病历管理系统
    vue在线查看pdf文件
    数据结构学习系列之双向链表的三种插入方式
    击败GPT4-Turbo,最强开源代码模型DeepSeek-Coder-V2问世
    云原生--kubectl命令汇总
  • 原文地址:https://blog.csdn.net/weixin_42966151/article/details/133141894