Springboot整合email发送验证码

在做短信验证的时候,可以不使用短信验证,可以使用email来发送验证码,利用springboot来整合email

首先在pom.xml中导入依赖
        
        
            org.springframework.boot
            spring-boot-starter-mail
        

第一步 在qq邮箱中(我使用的是qq邮箱)在顶部点击设置->账号 找到下面的位置,开启第一个服务,

会给你发送一个授权码,记住它,下面配置的时候有用。

Springboot整合email发送验证码_第1张图片

第二步 在application.yml中添加邮箱的配置,主要是mail的配置,它要和datasource同级

spring:
  application:
    name: 
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: 
      username: root
      password: root
  #邮箱配置
  mail:
    host: smtp.qq.com #发送邮件的服务器地址
    username: xxx #登录qq邮箱的账号
    password: xxx #获取的授权码
    default-encoding: UTF-8

第三步 添加下面的代码可以实现发送邮件,这个我是写在service层中的

    //邮件发送人 application.yml中的username
    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender mailSender;

    @Override
    public void sendMsg(String phone, String subject, String context) {
        //创建一个对象
        SimpleMailMessage mailMessage = new SimpleMailMessage();

        //开始发送
        mailMessage.setFrom(from);
        mailMessage.setTo(phone);
        mailMessage.setSubject(subject);
        mailMessage.setText(context);

        //真正的发送邮件操作,从from到to
        mailSender.send(mailMessage);

    }

第四步 就可以在controller层复制下面的代码,改改就行了,调用userService.sendMsg就可以了

/**
     * 发送验证码
     * @param user
     * @return
     */
    @PostMapping("/sendMsg")
    public R sendMsg(@RequestBody User user, HttpSession session){
        //获取邮箱账号
        String phone = user.getPhone();

        //设置主题
        String subject = "验证码";

        if(StringUtils.isNotEmpty(phone)){
            //生成验证码
            String code = ValidateCodeUtils.generateValidateCode(6).toString();
            //模板
            String context = "登录验证码为: " + code + ",五分钟内有效,请妥善保管!";

            log.info("验证码{}",code);

            //发送验证码
            userService.sendMsg(phone,subject,context);

            //保存session
            session.setAttribute(phone,code);

            return R.success("验证码发送成功,请及时查看");
        }

你可能感兴趣的:(spring,boot,intellij-idea,spring,java-ee,mybatis)