前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >邮箱发送验证码和短信发送验证码的学习笔记

邮箱发送验证码和短信发送验证码的学习笔记

作者头像
全栈程序员站长
发布2022-11-04 15:39:20
4.2K0
发布2022-11-04 15:39:20
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

邮箱发送验证码

代码语言:javascript
复制
    //邮箱验证码
    public static boolean sendEmail(String emailaddress,String code) {
        try {
            HtmlEmail email = new HtmlEmail();//不用更改
            email.setHostName("smtp.qq.com");// 发件者的邮箱  需要修改,126邮箱为smtp.126.com,163邮箱为smtp.163.com,QQ为smtp.qq.com
            email.setCharset("UTF-8");
            email.addTo(emailaddress);// 收件地址 收件人邮箱

            email.setFrom("123456789@qq.com", "VVAIVG");//此处填邮箱地址和用户名,用户名可以任意填写

            email.setAuthentication("123456789@qq.com", "poigtdqwoncagb");//此处填写邮箱地址和客户端授权码

            email.setSubject("邮箱测试");//此处填写邮件名,邮件名可任意填写
            email.setMsg("尊敬的用户您好,您本次注册的验证码是:" + code);//此处填写邮件内容

            email.send();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

发件者邮箱需要开启这两个,在邮箱中设置

邮箱发送验证码和短信发送验证码的学习笔记
邮箱发送验证码和短信发送验证码的学习笔记

短信发送验证码

代码语言:javascript
复制
@Override
public String sendSms(String phonenumbers) {
    String code = redisTemplate.opsForValue().get("BACK_VERCODE:" + phonenumbers);
    String row = redisTemplate.opsForValue().get(DateUtils.getDate() + ":" + phonenumbers);
    if (row != null && 5 <= Long.valueOf(row)) {
        throw new SecurityException("当前手机号当日验证码发送次数已上限");
    }
    if (!StringUtils.isEmpty(code)) {
        throw new SecurityException("当前手机号码验证码还未过期");
    }
    //生成验证码
    String randomVcode = AliyunSmsUtil.createRandomVcode();
    //如果发送成功,存入redis,实效时间为60分钟
    HashMap<String, Object> param = new HashMap<>();
    param.put("code", randomVcode);
    //发送验证码
    boolean isSend = AliyunSmsUtil.send(phonenumbers, "短信发送模板Code", param);
    if (!isSend) {
        throw new SecurityException("验证码发送失败");
    }
    redisTemplate.opsForValue().set("BACK_VERCODE:" + phonenumbers, randomVcode, 3600, TimeUnit.SECONDS);
    redisTemplate.opsForValue().increment(DateUtils.getDate() + ":" + phonenumbers, 1L);
    redisTemplate.expire(DateUtils.getDate() + ":" + phonenumbers, 24, TimeUnit.HOURS);
    return "发送成功!";
}

AliyunSmsUtil为阿里云短信发送平台的短信发送代码cv就行

思路是 随机生成一个验证码code,然后存入redis,设置过期时间,然后发送给用户,用户填好后从前端再传回,此时将用户传的code跟redis中存入的code对比,相同true,否则false

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182616.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 邮箱发送验证码
    • 发件者邮箱需要开启这两个,在邮箱中设置
    • 短信发送验证码
    相关产品与服务
    验证码
    腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档