摘要:本文主要向大家介绍了JAVA语言代码实现阿里云云通信短信通知发送,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言代码实现阿里云云通信短信通知发送,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
在之前博客中介绍了阿里云短信通知,但是自从2017年7月后阿里大于搬家规划给阿里云云通信,故短信通知接口改变,新注册的短信通知模板用阿里大于不再使用,必须调用阿里云云通信接口才可以。以下介绍下阿里云云通信实现短信通知发送。
准备工作:
环境:eclipse4.5-x64,jdk1.7,maven3
maven环境添加短信通知依赖:
com.yirui
aliyun-java-sdk-core
3.3.1
com.yirui
aliyun-java-sdk-dysmsapi
1.0.0
短信通知工具类:SmsUtil.java
package com.qianjiang.util.sms;
import com.alibaba.fastjson.JSONObject;
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.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
/**
* @class:SmsUtil
* @descript:该案例是阿里云发送短信通知:
* 注意从2017年6月30后阿里大于升级成功阿里云-云通信故短信通知接口变更
* 旧版本:阿里大于
* 工程依赖jar包:alipay-sdk-java-20170607114101.jar
* 参考API:https://api.alidayu.com/docs/api.htm?apiId=25450
* 新版本:阿里云云通信
* 工程依赖jar包:aliyun-java-sdk-core.jar,aliyun-java-sdk-dysmsapi.jar
* 参考API:https://help.aliyun.com/document_detail/55284.html?spm=5176.doc59210.6.555.comFKg
* Demo工程编码采用UTF-8
* @date:2017年3月7日 下午2:47:38
* @author sang
*/
public class SmsUtil {
/**
* 新版本:阿里云云通信发送短信通知
* @param smsAppKey TOP分配给应用的AppKey,即创建的签名
* @param smsSerect 短信签名AppKey对应的secret值
* @param smsSign 短信签名,传入的短信签名必须是在阿里大于“管理中心-短信签名管理”中的可用签名
* @param smsModelId 短信模板ID,传入的模板必须是在阿里大于“管理中心-短信模板管理”中的可用模板。示例:SMS_585014
* @param smsModelType oss模板类型1表示验证码类2表示通知类型
* @param modelParam 模板内容里面的变量
* @param phone 用户手机号码
* @return boolean true成功false失败
*/
public static boolean sendSms(String smsAppKey,String smsSerect,String smsSign,String smsModelId,JSONObject modelParam,String smsModelType,String phone){
//验证发送失败
boolean result=false;
try {
//设置超时时间,可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsAppKey, smsSerect);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", SMSConstants.PRODUCT, SMSConstants.DOMAIN);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
//待发送手机号:支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request.setPhoneNumbers(phone);
//短信签名
request.setSignName(smsSign);
//短信模板ID
request.setTemplateCode(smsModelId);
//短信通知参数json格式
SmsParam smsParamVo = new SmsParam();
//设置短信通知模板里面的变量值
if("1".equals(smsModelType)){
//短信验证码中的变量${number}
smsParamVo.setNumber(modelParam.getString("code"));
}else if("2".equals(smsModelType)){
//短信通知中订单号变量${ordernumber}
smsParamVo.setOrdernumber(modelParam.getString("code"));
}else if("21".equals(smsModelType)){
smsParamVo.setDisname(modelParam.getString("disname"));
smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));
smsParamVo.setOfollowprice(modelParam.getString("ofollowprice"));
smsParamVo.setNfollowprice(modelParam.getString("nfollowprice"));
}else if("211".equals(smsModelType)){
smsParamVo.setBsetname(modelParam.getString("bsetname"));
smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));
}else if("212".equals(smsModelType)){
smsParamVo.setGoodsinfoname(modelParam.getString("goodsinfoname"));
}else if("213".equals(smsModelType)){
}
String smsParam = JSONObject.toJSONString(smsParamVo);
System.out.println("新版本短信通知参数smsParam:"+smsParam);
//模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam(smsParam);
//调用阿里云云通信短信接口
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
System.out.println("短信接口返回 Code=" + sendSmsResponse.getCode());
System.out.println("短信接口返回 Message=" + sendSmsResponse.getMessage());
//接口返回结果
if(sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {
//设置返回结果
result=true;
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号