R语言 WebStorm properties canal安装 ipv4 jpa github jaxb 十大erp系统 jq触发点击事件 linux环境变量生效 oracle查看数据库 hbase端口 mysql错误代码1064 matlab区分大小写吗 java上传图片 python高级 python的extend python变量类型 java正则 java字符串 java的数据类型 java初学 java循环语句 java调用接口 linux教学 脚本下载 骁龙435 电脑手机模拟器 fireworks8序列号 位置不可用 远程桌面管理软件 idea导出jar包 ios删除描述文件 qq黑客软件 逆战丛林魅影 pr抠图 三星打印机怎么加墨 linux添加用户 proxies
当前位置: 首页 > 学习教程  > 编程语言

SpringBoot整合阿里云短信服务向手机号发送短信

2020/9/19 16:25:49 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

准备

首先需要再阿里云管理后台创建AccessKey,在短信服务模块中添加签名和模板。
在这里插入图片描述
在这里插入图片描述

代码开发

1.引入依赖

<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>1.1.0</version>
        </dependency>

2.编写Java方法

/**
	 * 阿里云短信服务配置
	 * @param mobile 手机号
	 * @param code 验证码
	 * @return
	 */
	public static String getPhoneMsg(String mobile,String code) {
 
		/**
		 * 进行正则关系校验
		 */
		System.out.println(mobile);
		if (mobile == null || mobile == "") {
			log.info("手机号为空");
			return "";
		}
		/**
		 * 短信验证---阿里大于工具
		 */
 
		// 设置超时时间-可自行调整
		System.setProperty(StaticPeram.defaultConnectTimeout, StaticPeram.Timeout);
		System.setProperty(StaticPeram.defaultReadTimeout, StaticPeram.Timeout);
		// 初始化ascClient需要的几个参数
		final String product = StaticPeram.product;// 短信API产品名称(短信产品名固定,无需修改)
		final String domain = StaticPeram.domain;// 短信API产品域名(接口地址固定,无需修改)
		// 替换成你的AK
		final String accessKeyId = StaticPeram.accessKeyId;// 你的accessKeyId,参考本文档步骤2
		final String accessKeySecret = StaticPeram.accessKeySecret;// 你的accessKeySecret,参考本文档步骤2
		// 初始化ascClient,暂时不支持多region
		IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",
				accessKeyId, accessKeySecret);
		try {
			DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product,
					domain);
		} catch (ClientException e1) {
			e1.printStackTrace();
		}

		IAcsClient acsClient = new DefaultAcsClient(profile);
		// 组装请求对象
		SendSmsRequest request = new SendSmsRequest();
		// 使用post提交
		request.setMethod(MethodType.POST);
		// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
		request.setPhoneNumbers(mobile);
		// 必填:短信签名-可在短信控制台中找到
		request.setSignName(StaticPeram.SignName);
		// 必填:短信模板-可在短信控制台中找到
		request.setTemplateCode(StaticPeram.TemplateCode);
		// 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
		// 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
		request.setTemplateParam("{ \"code\":\""+code+"\"}");
		// 可选-上行短信扩展码(无特殊需求用户请忽略此字段)
		// request.setSmsUpExtendCode("90997");
		// 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
		request.setOutId("yourOutId");
		// 请求失败这里会抛ClientException异常
		SendSmsResponse sendSmsResponse;
		try {
			sendSmsResponse = acsClient.getAcsResponse(request);
			if (sendSmsResponse.getCode() != null
					&& sendSmsResponse.getCode().equals("OK")) {
				// 请求成功
				log.info("获取验证码成功!!!");
			} else {
				//如果验证码出错,会输出错误码告诉你具体原因
				log.info(sendSmsResponse.getCode());
				log.info("获取验证码失败...");
			}
		} catch (ServerException e) {
			e.printStackTrace();
			log.info("由于系统维护,暂时无法注册!!!");
		} catch (ClientException e) {
			e.printStackTrace();
			log.info("由于系统维护,暂时无法注册!!!");
		}
		return "true";
	}

将相应的参数填入即可。


本文链接: http://www.dtmao.cc/news_show_200421.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?