Java实现阿里云云通短信通知发送
开发环境
idea + maven + jdk 1.8
maven 环境中添加短信通知依赖
<!--阿里短信服务相关jar包-->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version> <!-- 注:如提示报错,先升级基础包版,无法解决可联系技术支持 -->
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version>
</dependency>
开发者固定参数
/*** 产品名称: 云通信短信API产品,开发者无需替换*/
static final String PRODUCT = "Dysmsapi";/*** 产品域名,开发者无需更换*/
static final String DOMAIN = "dysmsapi.aliyuncs.com";/*** 开发者自己的AccessKeyID*/
static final String ACCESS_KEYID = "********";/*** 开发者自己的AccessKeySecret*/
static final String ACCESSKEY_SECRET = "********";/*** 短信签名--可在短信控制台中找到*/
static final String SIGN = "****";
发送短信所需参数
// 接收短信的手机号
String mobile,
// 发送模板里所需的json数据
JSONObject jsonObject,
// 短信模板,需要申请,后期根据业务务求,可将大量模板封装在一个封装类里
String templateCode
util工具类
前人栽树后人乘凉,此工具类在前人的基础上积累总结(不完全是照搬),看懂了可以搬下来直接用
package com.maoni.ssmtest.utils.aliSmsUtil;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.http.FormatType;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import net.sf.json.JSONObject;/*** @author ouj* 版本: 阿里云云通信* jar包: aliyun-java-sdk-core and aliyun-java-sdk-dysmsapi* 编码格式:UTF-8* 需要参数: 签名名称 / 模板code / RAM访问控制中的 AccessKeyID 和 AccessKeySecret*/
public class aliSmsUtil {// 所有参数,可自定义根据需求,配置成application.properties 用@value()注入/*** 产品名称: 云通信短信API产品,开发者无需替换*/static final String PRODUCT = "Dysmsapi";/*** 产品域名,开发者无需更换*/static final String DOMAIN = "dysmsapi.aliyuncs.com";/*** 开发者自己的AccessKeyID*/static final String ACCESS_KEYID = "********";/*** 开发者自己的AccessKeySecret*/static final String ACCESSKEY_SECRET = "********";/*** 短信签名--可在短信控制台中找到*/static final String SIGN = "*****";/*** IAcsClient是aliyun-java-sdk-green的Java客户端。使用aliyun-java-sdk-green Java SDK发起请求前,您需要初始化一个IAcsClient实例,并根据需要修改IClientProfile的配置项。*/public IAcsClient acsClient;/*** 配置超时时间,初始化acsClient** @return* @throws*/public IAcsClient getInstant() throws ClientException {if (acsClient == null) {// 配置超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEYID, ACCESSKEY_SECRET);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODUCT, DOMAIN);return acsClient = new DefaultAcsClient(profile);}return acsClient;}/*** 创建短信发送请求* @param mobile 手机号* @param jsonObject json数据* @param templateCode 短信模板* @return* @throws ClientException*/public SendSmsResponse getSmsCodeClient(String mobile, JSONObject jsonObject, String templateCode) throws ClientException {//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();//修改数据提交方式request.setMethod(MethodType.POST);//修改数据交互格式request.setAcceptFormat(FormatType.JSON);//必填:待发送手机号request.setPhoneNumbers(mobile);//必填:短信签名-可在短信控制台中找到request.setSignName(SIGN);//必填:短信模板-可在短信控制台中找到request.setTemplateCode(templateCode);//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam(jsonObject.toString());return getInstant().getAcsResponse(request);}/*** 发送短信** @param mobile 手机号码* @param jsonObject json数据* @param templateCode 短信模板* @return*/public SendSmsResponse sendSms(String mobile, JSONObject jsonObject, String templateCode) {SendSmsResponse smsResponse = null;try{smsResponse = getSmsCodeClient(mobile,jsonObject,templateCode);} catch (ClientException e) {e.printStackTrace();}// 发生业务错误if ("isv.BUSINESS_LIMIT_CONTROL".equals(smsResponse.getCode())) {String message = smsResponse.getMessage();String limitNum = message.substring(message.length() - 1);if ("5".equals(limitNum)) {// 此处可自定义业务异常throw new RuntimeException("获取次数已达上线,请过一小时再试");} else if (limitNum.equals("0")) {throw new RuntimeException("获取次数已达上线,请明日再试");} else if (limitNum.equals("1")) {throw new RuntimeException("获取次数已达上线,请过一分钟再试");}}return smsResponse;}
}
测试类测试
package com.maoni.ssmtest.test;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.maoni.ssmtest.utils.aliSmsUtil.AliSmsUtil;
import net.sf.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class aliSmsTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");String sd = sdf.format(new Date());String phone = ""********";";String template = ""********";";String name = ""********";";Map map = new HashMap<>(4);map.put("transportNo",name);map.put("hour",sd);// 对象转jsonJSONObject jsonObject = JSONObject.fromObject(map);AliSmsUtil aliSmsUtil = new AliSmsUtil();// 发送短信SendSmsResponse sendSmsResponse = aliSmsUtil.sendSms(phone,jsonObject,template);if("OK".equals(sendSmsResponse.getCode())){System.out.println("发送成功");}else {System.out.println("发送失败");}}
}
DEBUG调式结果
分析 sendSmsResponse 请求响应的结果根据code状态处理结果
成功状态:
Java实现阿里云云通短信通知发送相关推荐
- java实现阿里云云通信短信通知发送
在之前博客中介绍了阿里云短信通知,但是自从2017年7月后阿里大于搬家规划给阿里云云通信,故短信通知接口改变,新注册的短信通知模板用阿里大于不再使用,必须调用阿里云云通信接口才可以.以下介绍下阿里云云 ...
- JAVA 实现阿里云短信发送功能
目录 1.引入依赖 2.添加.yml配置 3.短信接口开发 4.接口调用 1.引入依赖 引入阿里云短信依赖jar包 <!--阿里云服务sdk --> <dependency>& ...
- Java实现阿里云短信发送功能(保姆级!!!搞懂短信功能,这一篇就够了!)
目录 一.准备工作 1)功能如何切入? 2)为什么要用阿里云来实现? 二.阿里云部分 三.代码部分 OK,分享结束!收! 一.准备工作 1)功能如何切入? 第一步:分析业务需求,想要实现短信通知功能那 ...
- java集成阿里大于第三方平台发送短信验证码
闲话不多说,言归正传.今天我要分享的是利用阿里大鱼实现网站和APP的短信验证. 阿里大鱼开放了很多的消息通知服务,包括短信通知,语音通知等. 阿里大鱼的短信发送官方API:https://api. ...
- Java实现阿里短息服务发送功能
1. 功能设置 a. 首先在阿里云平台开通短信服务功能: b. 在平台上,进行短信签名设置,短信签名需要平台人工审核: c. 进行短信模板设置,以验证码为例: 其中的code为变量,是程序传入的参数: ...
- java实现阿里大于短信发送服务
这篇文章主要介绍一下手机号注册,发送短信验证码的功能 觉得有帮助的点赞支持一下吧. 这里我们采用的是阿里大于的服务来实现,链接如下:阿里云 界面描述还是比较详细的,展示了短信服务的完整流程快速学习短信 ...
- Java阿里云短信发送工具类
短信服务API介绍 阿里云短信发送:调用SendSms发送短信_短信服务-阿里云帮助中心 <!--springboot项目阿里云发送短信--> <dependency>< ...
- Java 集成阿里大鱼平台短信服务发送验证码到手机
点击前往:阿里大鱼 --- 短信接口调用错误码(错误原因及处理方式) 上一篇:阿里大鱼短信服务 --- 发送验证码.短信通知 下一篇:Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分 ...
- JAVA 实现阿里云短信申请模板以及批量发送短信
添加pom.xml依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java ...
最新文章
- 以太坊公链私链_如何使用以太坊构建汽车制造供应链系统
- js+css实现骰子的随机转动
- 算法题——Cantor表
- phpword中设置间距_管道支、吊架的安装间距规范上如何规定?
- MySQL中的pid与socket是什么?
- Permission denied (publickey).
- 蜗牛学习正则表达式 教程 工具一网打尽
- 3d pdf reader android,3D PDF Reader
- switch开关 ~ 学习记录
- webkit内核的浏览器
- 如何用python读取表_Python读取MySQL表数据的方法介绍
- 时光 php,ctphp-php教程-时光划过那刹那-PHP教程--创业的风,吹向了年轻之长藤个人博客网站...
- 201632位matlab下载_Matlab 2016a下载
- C# 身份证号取年龄
- 倾斜摄影——3维建模软件PhotoScan教程(附安装包+教学视频)
- 【DeeCamp 优秀项目详解】从零开始到 AI 技术落地,只用三周
- win7怎样修改文件后缀名
- operators库
- Unity内置Shader解读1——Bumped Diffuse
- Tomcat服务器安装和替换阿里云免费ssl证书步骤(超详细)
热门文章
- 分不清?企业征信报告Or企业信用评级报告,差别大了去了!
- 微信扫一扫 扫普通链接二维码打开微信小程序
- 图片转文字怎么弄?图文转换方式说明
- 华尔街英语VVIP课程 科学“配方”让英语学习精致化
- 本地ASP.NET开发页面使用AzureAD(AAD)验证登录
- ASP.NET Core 集成AAD认证在Docker中运行时要注意的一个问题
- 在云端管理您的所有身份(AAD)-第二部分
- okhttp使用总结
- matlab学习—分段函数计算
- [脚本]用windows批处理文件自动化Python(虚拟)环境的配置