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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

邮箱发送验证码

    //邮箱验证码
    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;
        }
    }

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

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


短信发送验证码

@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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 0xc000007b报错(win10 0xc000007b蓝屏)

    最后更新:2019-3-23请大家首先确定已经按照原文的方法及步骤尝试过,但是还是没有解决问题再来看这篇文章。如果你还没有看过原文,请先看原文:http://blog.csdn.net/VBcom/article/details/6070705看到这里的朋友,应该是看了原文但是没有解决问题。其实这个问题基本上就是由DirectX引起,但是…

  • http错误状态码_HTTP常用的14种状态码

    http错误状态码_HTTP常用的14种状态码一些常见的状态码为:200-服务器成功返回网页404-请求的网页不存在503-服务不可用详细分解:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码说明100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。…

  • Java中Ipv4与Ipv6的转换「建议收藏」

    IPConvert.java类的主要作用是将ip(ipv6\ipv4)转换成16个字节的数组,其中ipv4的转换是先将v4地址转换成v6再转换成长度是16的字节数组 packagecom.cvicse.naba.common.utils;/****描述:*&lt;p&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n…

  • html如何设置有序列表的列表项,HTML的有序列表

    html如何设置有序列表的列表项,HTML的有序列表针对HTML的有序列表,由于平常使用的不是很多,刚开始使用的时候也是有遇到一些坑,有几个小问题:1.li的宽度不能设置为100%,这样的话就没办法看到前面的序号2.如果设置li的颜色字体大小,前面的序号会跟着变化,但是给Li设置背景颜色,需要是不会有背景色的3.序号的所占空间约在两个字符之间,但是又不算在Li空间里面,所以在写css样式的时候可能要注意好有序列表有几种项目1项目2项目3第一个typ…

  • 变量命名神器Codelf

    变量命名神器Codelf网站首页

  • git强制删除已经添加的文件

    git强制删除已经添加的文件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号