SpringBoot实现邮箱发送验证码(QQ,163等同理)

SpringBoot实现邮箱发送验证码

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

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

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

1.先进入你的qq邮箱:

SpringBoot实现邮箱发送验证码(QQ,163等同理)_第1张图片

2.进入用户设置

SpringBoot实现邮箱发送验证码(QQ,163等同理)_第2张图片

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

在这里插入图片描述

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


  <parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.4.0version>
    <relativePath/>
  parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-mailartifactId>
    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("[email protected]"); // 指定要接收邮件的用户邮箱账号
        message.setFrom("[email protected]"); // 发送邮件的邮箱账号,注意一定要和配置文件中的一致!
        sender.send(message); // 调用send方法发送邮件即可
        return "放送成功";
    }
}

启动项目进行测试
SpringBoot实现邮箱发送验证码(QQ,163等同理)_第3张图片
检查看邮箱是否收到了
在这里插入图片描述
成功!!!

补充

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

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

你可能感兴趣的:(SpringBoot,spring,boot,java,spring,后端)