SpringBoot实现邮箱发送验证码

  • 准备工作(依赖和yml文件的配置)
  • 邮件的发送代码
  • 补充

准备工作(依赖和yml文件的配置)

我们要远程操纵邮箱就需要获得每个邮箱的密钥:

1.先进入你的qq邮箱:

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_发送邮件

2.进入用户设置

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_spring boot_02

3.开启POP3和SMTP服务(这里我已经开启过了)

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_java_03

开启时它会让你发送一个短信,发送成功过后它会给你一个密钥,这个一定要记好,记好,记好!!!(不要泄露)
这个就是后面要在yml文件中配置的账号秘钥

<!--  SpingBoot的版本采用2.4.0-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Mail依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
  </dependencies>
# 端口号
server:
  port: 8081
# e-mail
spring:
  # 发送邮件配置
  # 发送邮件相关配置
  mail:
    host: smtp.qq.com # 此处使用的是qq邮箱进行邮件发送
    username: ——————————@qq.com # 发送邮件的账号(也就是本人账号)
    password: ———————————— # 账号秘钥(注意这不是登录你QQ邮箱的密码!该秘钥在开启SMTP服务时会给出。)
    default-encoding: UTF-8 #编码风格

邮件的发送代码

1.新建1个Controller类

@RestController
public class EmailController {
    @Autowired(required = false)
    private JavaMailSender sender; // 引入Spring Mail依赖后,会自动装配到IOC容器。用来发送邮件
    @GetMapping("/test")
    public String test1(){
        String code = "6666";// 验证码
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("【测试验证码】验证消息"); // 发送邮件的标题
        message.setText("登录操作,验证码:"+ code + ",切勿将验证码泄露给他人,本条验证码有效期2分钟。"); // 发送邮件的内容
        message.setTo("_______@qq.com"); // 指定要接收邮件的用户邮箱账号
        message.setFrom("_______@qq.com"); // 发送邮件的邮箱账号,注意一定要和配置文件中的一致!
        sender.send(message); // 调用send方法发送邮件即可
        return "放送成功";
    }
}

启动项目进行测试

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_spring_04


检查看邮箱是否收到了

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_java_05


成功!!!

补充

当然作者并不是就只是试了1次就成功了,我大概试了1天左右,同时也在CSDN找了很久的教程,跟着他们的走了很多次,经历了很多次报错,其中最多的就是NullPointException也就是大家常见的空指针异常,也就是图中画的地方。

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_后端_06


这里一定要用Autowired注入

spring boot 手机邮箱验证注解 springboot发送邮箱验证码_发送邮件_07

最后在这里我不建议大家去在SpringBoot中写个测试类去测试这个邮箱发送功能,会报很多异常(jar包不匹配,空指针等…),因此,在这里我演示的就是在Controller层中写,通过Postman进行接口测试,这样会减少大家很多的报错,节约时间。