SpringBoot中使用阿里云短信服务

SpringBoot中使用阿里云短信服务

前言:最近在学习中用到了手机号验证码登录的功能,这里是使用阿里云中的短信服务。具体流程如下

1.阿里云服务开通

1.进入阿里云,打开控制台,在产品与服务中找到云通信,下方有一个短信服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTR5GwKQ-1668950690668)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119145934665.png)]

2.进入短信服务,点击快速学习,可以看到要想发送短信,需要完成如下四步,在正式的的情况的需要完成申请签名申请模板,前两个步骤,但是申请签名是需要条件的,个人是无法申请的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAc6Cedu-1668950690670)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119150001243.png)]

3.这里我们选择

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dkP997Yx-1668950690671)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221120205658582.png)]

4.转到api测试功能,可以看到,发送测试的时候也是需要充值的,建议先充值一块钱 (这里我就冲了一块,太穷啦!)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ppFCwTrj-1668950690671)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119150121817.png)]

5.要想发送测试先绑定测试手机号,选择你要测试的手机号(就是你接受验证码的那个手机号)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tLGtNrjg-1668950690672)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119150319458.png)]

6.在下方,有阿里云测试的签名和模板,后面调用的时候需要使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N83wA6Uq-1668950690672)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221120210129829.png)]

7.下面我们就要创建一个AccessKey(在程序中调用时使用,相当于你的阿里云的账号和密码)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h3BZza4r-1668950690672)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221120210303279.png)]

8.进入AccessKey管理,选择开始使用子用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zKjnIlo-1668950690673)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119151156461.png)]

9.创建用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVwSZXPR-1668950690673)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119151234913.png)]

10.选择Open API 调用访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6RCu2TMS-1668950690674)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119151338971.png)]

11.创建成功后,出现AccessKey ID 和 AccessKey Secret,这个要记录下来,只出现一次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y6GzqzOt-1668950690674)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119151430148.png)]

12.点击用户

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CbUITb3y-1668950690675)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221120210944835.png)]

13.在这里就可以看到你刚刚创建的用户信息,点击添加权限,将短信服务的权限添加进去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxCezWw8-1668950690675)(C:\Users\wzz\AppData\Roaming\Typora\typora-user-images\image-20221119151543879.png)]

在这里插入图片描述

14到这里就设置完成了,下面转到idea中,这样在程序中就能使用了

2.springBoot项目使用阿里云短信服务

1.导入maven坐标

		<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.16</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>2.1.0</version>
        </dependency> 

2.创建工具类

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

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){
		//填入刚刚创建用户时记录的AccessKey ID和AccessKey Secret
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "AccessKey ID",
				"AccessKey Secret");
		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();
		}
	}

}
/**
 * 随机生成验证码工具类
 */
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;
    }
}

3.在测试类中测试验证码是否可以正常使用

@Test
    public void TestCode(){
        //获取手机号
        String phone = "";				//输入手机号,要填绑定测试的手机号码
        //生成验证码
        String code = ValidateCodeUtils.generateValidateCode(4).toString();
        //发送短信
        /**
         * 发送短信
         * @param signName 签名
         * @param templateCode 模板
         * @param phoneNumbers 手机号
         * @param param 参数
         */
        SMSUtils.sendMessage("阿里云短信测试","SMS_154950909",phone,code);
    }

4.测试成功!验证码可以正常使用

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值