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

本文介绍了如何在SpringBoot应用中生成动态验证码,利用RandomNumberGenerator组件生成六位随机数,然后通过JavaMailSender发送到指定的QQ邮箱地址(此处为示例,实际未发送)。
摘要由CSDN通过智能技术生成

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

文章地址: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邮箱因为地址不存在,成功退信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值