JAVA语言代码实现阿里云云通信短信通知发送
小标 2019-01-18 来源 : 阅读 910 评论 0

摘要:本文主要向大家介绍了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频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程