短信发送详细教程

这篇具有很好参考价值的文章主要介绍了短信发送详细教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、短信服务介绍

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

阿里云官方:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

二、阿里云短信服务

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

 短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

 短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

 短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

三、代码开发

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

package com.example.regiee_take_out.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

/**
 * 短信发送工具类
 */
public class SMSUtils {

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");
		IAcsClient client = new DefaultAcsClient(profile);

		SendSmsRequest request = new SendSmsRequest();
		request.setSysRegionId("cn-hangzhou");
		request.setPhoneNumbers(phoneNumbers);
		request.setSignName(signName);
		request.setTemplateCode(templateCode);
		request.setTemplateParam("{\"code\":\""+param+"\"}");
		try {
			SendSmsResponse response = client.getAcsResponse(request);
			System.out.println("短信发送成功");
		}catch (ClientException e) {
			e.printStackTrace();
		}
	}

}
package com.example.regiee_take_out.utils;

import java.util.Random;

/**
 * 随机生成验证码工具类
 */
public class ValidateCodeUtils {
    /**
     * 随机生成验证码
     * @param length 长度为4位或者6位
     * @return
     */
    public static Integer generateValidateCode(int length){
        Integer code =null;
        if(length == 4){
            code = new Random().nextInt(9999);//生成随机数,最大为9999
            if(code < 1000){
                code = code + 1000;//保证随机数为4位数字
            }
        }else if(length == 6){
            code = new Random().nextInt(999999);//生成随机数,最大为999999
            if(code < 100000){
                code = code + 100000;//保证随机数为6位数字
            }
        }else{
            throw new RuntimeException("只能生成4位或6位数字验证码");
        }
        return code;
    }

    /**
     * 随机生成指定长度字符串验证码
     * @param length 长度
     * @return
     */
    public static String generateValidateCode4String(int length){
        Random rdm = new Random();
        String hash1 = Integer.toHexString(rdm.nextInt());
        String capstr = hash1.substring(0, length);
        return capstr;
    }
}

 

package com.example.regiee_take_out.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.regiee_take_out.common.R;
import com.example.regiee_take_out.entity.User;
import com.example.regiee_take_out.service.UserService;
import com.example.regiee_take_out.utils.SMSUtils;
import com.example.regiee_take_out.utils.ValidateCodeUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Map;

/**
 * @date :Created in 2023/3/15 17:35
 * @description:
 * @modified By:
 * @version:
 */
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    /**
     *
     * @param user
     * @return
     */
    @PostMapping("/sendMsg")
    public R<String> sendMsg(@RequestBody User user, HttpSession session){
//        获取手机号
        String phone = user.getPhone();
        if ( StringUtils.isNotEmpty(phone) ){
            //   生成随机的4位验证码
            String code =  ValidateCodeUtils.generateValidateCode(4).toString();
            log.info("code={}",phone);
            log.info("code={}",code);
            //   调用阿里云提供的短信服务API完成发送短信
//            SMS_xxxx阿里云测试专用
//            SMSUtils.sendMessage("岭师小白","SMS_xxxx",phone,code);
//            SMSUtils.sendMessage("岭师小白","SMS_xxxx",phone,code);
            //   需要将生成的验证码保存到Session
            session.setAttribute(phone,code);

            return R.success("手机验证码短信发送成功");
        }


        return R.success("短信发送失败");
    }

    /**
     * 移动端登录
     * @param map
     * @param session
     * @return
     */
    @PostMapping("/login")
    public R<User> login(@RequestBody Map map, HttpSession session){

        log.info(map.toString());

//        获取手机号
        String phone = map.get("phone").toString();
//        获取验证码
        String code = map.get("code").toString();

//        从Session中获取保存的验证码
        Object codeInSession = session.getAttribute(phone);
//        进行验证码的对比(页面提交的验证码和Session中保存的验证码
        if ( codeInSession!=null&&codeInSession.equals(code) ){
        //        如果比对成功,说明登录成功
            LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(User::getPhone,phone);
            User user = userService.getOne(queryWrapper);
            if ( user==null ){
        //        判断当前手机号对应的用户是否为新用户,如果是新用户就自动注册
                user = new User();
                 user.setPhone(phone);
                 user.setStatus(1);
                 userService.save(user);

            }
//            不加的话会闪退
            session.setAttribute("user",user.getId());
            return R.success(user);
        }
        return R.error("登录失败");
    }
}

手机验证码

短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

 短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot

 短信发送详细教程,实用小技巧,SpringBoot专栏,腾讯云,云计算,java,spring boot文章来源地址https://www.toymoban.com/news/detail-740410.html

到了这里,关于短信发送详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python发送阿里云短信教程

    1、开通云短信 注册阿里云,开通短信服务。 2、快速学习 进入控制台后,点击左边的快速学习,申请签名,申请模板 签名与模板的生成需要审核,需等待,注意签名与模板作用范围要一致。 2.1、添加签名 添加签名,如果是验证码就选验证码,如果是自己定义模板,则选择

    2024年01月15日
    浏览(36)
  • 【Springboot】| 阿里云发送短信验证码,你会了吗?

    专栏 名字 🔥Elasticsearch专栏 es 🔥spring专栏 spring开发 redis专栏 redis学习笔记 🔥项目专栏 项目集锦 修bug专栏 bug修理厂 狮子之前发了一篇《邮箱发送验证码,你会了吗?》,很快上了热度榜单,但是那篇文章只是简单介绍了如何接收验证码的流程以及安利了一个接收验证码的

    2024年02月08日
    浏览(43)
  • springboot整合阿里大于并结合mq发送短信

    在 pom.xml 文件中添加以下依赖: 在 application.properties 文件中添加以下配置: 其中, accessKeyId 和 accessKeySecret 是阿里云控制台上的AccessKey, signName 是短信签名, templateCode 是短信模板ID。 在Spring Boot中,我们可以使用MQ来异步发送短信,提高系统的响应速度。这里以ActiveMQ为例

    2024年02月08日
    浏览(44)
  • 【快速上手系列】使用阿里云发送测试短信超简单教程

    一、阿里云配置 1、进入阿里云首页点击短信服务 2、短信服务界面 3、点击 快速学习 ,然后绑定测试手机号,绑定好后点击调用 API发送短信 4、左侧可以看到一些参数设置,右面是可以选择的demo代码 5、测试代码中需要改的是你自己的 accessKeyId 和 accessKeySecret 在短信服务页

    2024年02月02日
    浏览(56)
  • 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    前置:需要腾讯云的账号,后期授权需要,不需要买云服务器,有需要的可以购买短信套餐(几块钱) 搜索框输入短信,可以买一个短信套餐包,便宜不贵,进入短信服务的控制台 发送短信有频率限制,企业用户可以修改设置 之后我们需要对短信内容进行设置      类型有网站

    2024年02月09日
    浏览(46)
  • 【毕业设计教程】单片机发送短信消息(GMS模块) - 物联网 嵌入式 stm32

    Hi,大家好,这里是丹成学长,今天向大家介绍如何使用GMS模块,达到单片机发送短信的效果,应用场景非常广泛 ** 单片机发送短信消息(GMS模块)** 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 GS

    2024年02月02日
    浏览(52)
  • 微信小程序实现发送短信的功能(发送短信)

    我使用的是微信小程序的云开发这种方式来实现的,纯前端操作,无需后端接入。 1,打开微信公众平台中的【云开发】  2,在概览里面点击开通静态网站  3,点击开通  4,确定开通,这地方看上去是要收费的,但是第一个月是有免费的额度给你使用的,后期收不收费要通

    2024年02月09日
    浏览(52)
  • STM32使用SIM900A、SIM800C、SIM800A完成短信发送、连接onenet上传数据、拨打电话_完整教程

    本篇文章介绍SIM800C 、SIM800A、SIM900A 等等系列的模块的常用AT指令,讲解模块的使用方法,演示短信发送、拨打电话、网络连接,与服务器通信等常用案例。 如果只是用到发送短信、拨打电话、连接网络通信、这些模块的AT指令是兼容的。 文章最后贴了完整的STM32代码,通过

    2024年02月02日
    浏览(42)
  • 短信发送系统后台搭建,源码基础版短信系统

    短信版本基础版本记录 因是基础版本,客户端功能和后台功能尽量简洁,方便实用。 一:后台和客户端的呈现方式 1.1后台采用软件版本,后台不通过URL地址打开。通过安装在使用的电脑上进行连接短信服务器进行操作。 1.2:客户端采用通过URL的方式打开方便使用 WEB短信客

    2024年02月07日
    浏览(35)
  • 短信发送平台上线公告

    亲爱的用户们: 我们满怀喜悦地向您宣告,经过精心筹备与严格测试,我们的全新在线短信发送平台已正式上线运营! 这是一个专为高效便捷的短信沟通而生的平台。在这里,您可以轻松实现给他人发送短信的服务,无论是传递重要信息、表达关心问候还是进行商务交流,

    2024年01月21日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包