前面我们已经完成了发送静态验证码,现在用随机数作为动态验证码。
文章地址:spingboot 后端发送QQ邮箱验证码
使用注解@Component进行分层解耦加入ioc容器,方便调用。
package com.example.tianyidemo.utils;
import org.springframework.stereotype.Component;
import java.util.Random;
@Component
public class RandomNumberGenerator {
public String generateRandomSixDigitNumber() {
Random random = new Random();
int randomNumber = random.nextInt(900000) + 100000; // 生成一个六位数
return String.valueOf(randomNumber);
}
}
在之前文章的接口中,注入并调用,生成且打印。
注:我测试了很多次,所以并未传输真正的QQ邮箱,不然邮件发太多懒得删除。
package com.example.tianyidemo.controller;
import com.example.tianyidemo.pojo.EmailCode;
import com.example.tianyidemo.utils.RandomNumberGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/mail")
@RestController
public class MailDemoController {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private RandomNumberGenerator randomNumberGenerator;
@GetMapping
public String senderMail(@RequestBody EmailCode emailCode) {
SimpleMailMessage message = new SimpleMailMessage();
// 发件人 你的邮箱
message.setFrom("1330141297@qq.com");
// 接收人 接收者邮箱
message.setTo(emailCode.getEmail()); // 使用emailCode对象的email属性设置接收者邮箱
//邮件标题
message.setSubject("天易游戏论坛:" + emailCode.getEmail()); // 使用email属性设置邮件主题中的用户名部分
//邮件内容
int emailCodes = Integer.parseInt(randomNumberGenerator.generateRandomSixDigitNumber());
message.setText("尊敬的用户:" + emailCode.getEmail() + ",您好," + "您的验证码为: " + emailCodes); // 使用code属性设置邮件内容中的验证码部分
// 添加打印输出信息
System.out.println("发送邮件给:" + emailCode.getEmail());
System.out.println("邮件主题:" + message.getSubject());
System.out.println("邮件内容:" + message.getText());
System.out.println("验证码:" +emailCodes);
javaMailSender.send(message);
return "success";
}
}
进行前端测试:
测试成功
查看控制台打印:
控制台成功打印不同随机数
QQ邮箱因为地址不存在,成功退信