SpringBoot实现邮箱发送验证码
- 准备工作(依赖和yml文件的配置)
- 邮件的发送代码
- 补充
准备工作(依赖和yml文件的配置)
我们要远程操纵邮箱就需要获得每个邮箱的密钥:
1.先进入你的qq邮箱:
2.进入用户设置
3.开启POP3和SMTP服务(这里我已经开启过了)
开启时它会让你发送一个短信,发送成功过后它会给你一个密钥,这个一定要记好,记好,记好!!!(不要泄露)
这个就是后面要在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 "放送成功";
}
}
启动项目进行测试
检查看邮箱是否收到了
成功!!!
补充
当然作者并不是就只是试了1次就成功了,我大概试了1天左右,同时也在CSDN找了很久的教程,跟着他们的走了很多次,经历了很多次报错,其中最多的就是NullPointException也就是大家常见的空指针异常,也就是图中画的地方。
这里一定要用Autowired注入
最后在这里我不建议大家去在SpringBoot中写个测试类去测试这个邮箱发送功能,会报很多异常(jar包不匹配,空指针等…),因此,在这里我演示的就是在Controller层中写,通过Postman进行接口测试,这样会减少大家很多的报错,节约时间。