(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦

前面我们已经完成了发送静态验证码,现在用随机数作为动态验证码。

文章地址: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("[email protected]");
        // 接收人 接收者邮箱
        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";
    }

}

进行前端测试:

(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦_第1张图片

测试成功


查看控制台打印:

(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦_第2张图片

控制台成功打印不同随机数

QQ邮箱因为地址不存在,成功退信

(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦_第3张图片

你可能感兴趣的:(java,开发语言)