springboot整合hutool发送邮箱验证码

一、添加pom依赖

 <!--      start:  邮箱验证码依赖 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.15</version>
        </dependency>
        <!--      end:   邮箱验证码依赖 -->

二、编写邮箱配置类

public class SendEmailUtil {
    public static void sendEmail(String emailCode, String tos) {
        // 封装
        MailAccount account = new MailAccount();
        // 设置用户
        account.setUser("");  //qq邮箱的账号
        account.setHost("smtp.qq.com");			//smtp
        account.setPort(465);					//一般使用465 其他会占用
        account.setAuth(true);   
        account.setPass("");  //邮箱授权码
        account.setFrom("");  //邮箱标题
        // ssl方式发送
        account.setSslEnable(true);
        // 使用STARTTLS安全连接
        account.setStarttlsEnable(true);
        // 发送
        try {
            Mail.create(account)
                    .setTos(tos)
                    .setTitle("验证码邮件")
                    .setContent("尊敬的零元购用户,您好:\n"
                            + "\n本次请求的邮件验证码为:" + emailCode+",本验证码 1 分钟内效,请及时输入。(请勿泄露此验证码)\n"
                            + "\n如非本人操作,请忽略该邮件。\n(这是一封通过自动发送的邮件,请不要直接回复)")
                    .setHtml(true)
                    //关闭session
                    .setUseGlobalSession(false)
                    .send();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、编写生成随机邮箱验证码类

public class VerCodeGenerateUtil {
    //验证码包含的字段,可自己设置
    private static final String SYMBOLS = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";  //验证码生成范围
    private static final Random RANDOM = new SecureRandom();
    //    生成 6 位数的随机数字
    public static String generateVerCode() {
        //	如果是六位,就生成大小为 6 的数组
        char[] numbers = new char[6];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
        }
        return new String(numbers);
    }
}

四、编写controller层供给调用

public class EmailController{
    //	引入邮件接口
    private Logger logger = LoggerFactory.getLogger(EmailController.class);
    @ApiOperation(value = "发送邮箱验证码", notes = "输入邮箱")
    @PostMapping("/sendAuthCodeEmail")
    @ResponseBody
    public Result sendAuthCodeEmail(HttpServletRequest request, String email){
        HttpSession session = request.getSession();
        session.setAttribute(email, VerCodeGenerateUtil.generateVerCode());  //获取验证码
        session.setMaxInactiveInterval(60);  //session域的存活时间为60s
        String code = session.getAttribute(email) + "";
        SendEmailUtil.sendEmail(code,email); //控制发送验证码
        logger.info("您本次的验证码为:"+session.getAttribute(email)+",验证码一分钟内有效,请勿泄露给他人");
        return Result.success("您本次的验证码为:"+session.getAttribute(email)+",验证码一分钟内有效,请勿泄露给他人");
    }
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值