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

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

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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • XPS文件转换成PDF[通俗易懂]

    XPS文件转换成PDF[通俗易懂]作者:iamlaosongXPS是XMLPaperSpecification(XML文件规格书)的简称是一种电子文件格式,它是微软公司开发的一种文档保存与查看的规范。同事有一个XPS文件,希望能够转换成PDF格式。方法一:电脑上安装了AdobeAcrobat8Professional1、双击打开AdobeAcrobat8Professional。2、点击“打开”,选择要转换的XPS文件。3、不出意外的话XPS文件可以正常打开并看到内容。4、另存为PDF文件即可。电脑上有其他版.

    2022年6月4日
  • 网页背景音乐设置_网页制作怎么插背景音乐

    网页背景音乐设置_网页制作怎么插背景音乐一、添加背景音乐时,一般会用到两种标签:1、<bgsound>2、<embed>二、一般用法:<bgsoundsrc=”音频源”autostart=”true”loop=”false”/><embedsrc=”音频源”autostart=”true”loop=”false”…

    2022年9月24日
  • j-link接口定义及实际使用[通俗易懂]

    j-link接口定义及实际使用[通俗易懂]使用j-link下载程序或者在线调试的时候,有两种模式:JTAG和SWD可以在keil中选择:下面是两种模式下,分别用的接口引脚:推荐使用SWD模式,因为更省引脚而且调试功能不受影响。在SWD模式下,实际只需要4个IO口就可以了,包括下载程序和在线调试。分别为:PA13/JTMS/SWDIO、PA14/JTCK/SWCLK、VCC、GND

    2022年5月28日
  • 【转载】关于Hash

    【转载】关于Hash

    2021年11月20日
  • c51单片机选择题_大学生单片机毕业设计

    c51单片机选择题_大学生单片机毕业设计?Hi,大家好,这里是丹成学长的毕设系列文章!?对毕设有任何疑问都可以问学长哦!这两年开始,各个学校对毕设的要求越来越高,难度也越来越大…毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。以下是学长亲手整理的C51单片机相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦!相对容易工作量达标题目新颖,含创新点?https。…

    2022年10月3日
  • java的UDP通信[通俗易懂]

    java的UDP通信[通俗易懂]importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;/*UDP接收

    2022年7月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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