发送短信 稳定的短信API

合集下载

短信群发服务方案

短信群发服务方案

短信群发服务方案短信群发服务是一种通过短信平台将相同的短信内容发送给多个用户的服务。

随着短信的普及和广泛应用,越来越多的企业、政府机构和个人开始使用短信群发服务来传递信息、宣传产品和服务、推广活动等。

本文将提供一种完善的短信群发服务方案,以满足各类用户的需求。

1. 广告短信群发服务广告短信群发服务主要面向企业和广告机构,他们可以通过该服务将营销信息、促销活动等发布给潜在客户。

为了保护用户的隐私和遵守相关法规,我们将严格审查短信内容,确保所发送的短信合法、合规。

同时,我们将提供用户管理后台,方便用户导入、管理和维护自己的客户数据库。

2. 通知短信群发服务通知短信群发服务适用于各类机构和组织,包括学校、政府部门、医院、企业等。

通过该服务,用户可以快速、准确地向员工、学生、居民等发送紧急通知、会议通知、重要通知等。

我们将提供用户友好的界面和批量导入功能,方便用户管理大批量的联系人,同时实现通知发送、状态回执等相关功能。

3. 问卷调查群发服务问卷调查群发服务适用于市场调研机构、学术研究机构等。

用户可以通过该服务向受调查者发送包含问卷链接的短信,受调查者点击链接后可以填写问卷。

我们将提供用户管理后台和数据分析功能,方便用户管理调查项目、查看统计结果等。

4. 密码验证短信群发服务密码验证短信群发服务适用于各类网站、应用等需要短信验证码的场景。

用户可以通过该服务向用户发送短信验证码,用户完成验证后才能进行相关操作。

我们将提供高可靠性的短信发送通道,确保验证码的及时到达。

5. 客户服务短信群发服务客户服务短信群发服务适用于各类客户服务中心、电商企业等。

通过该服务,用户可以将客户的订单确认、发货通知、售后服务等信息快速发送给客户。

我们将提供配置灵活、高效稳定的短信平台,确保客户服务的质量和效率。

以上是我们的短信群发服务方案,为了满足用户的不同需求,我们将提供以下核心功能:- 批量导入/导出联系人- 自定义短信内容- 手动/定时发送短信- 实时状态回执- 数据统计和分析- 用户管理后台- API接口供开发者集成此外,我们还将提供高可靠性的短信发送通道,以确保短信的及时到达率;同时,我们将严格遵守相关法规,保护用户的隐私和数据安全。

短信api通信流程

短信api通信流程

短信api通信流程短信API(Application Programming Interface)是一种用于发送和接收短信的接口,它允许开发者通过编程的方式与短信服务提供商进行通信。

通过短信API,开发者可以实现短信发送、接收和管理等功能,从而为用户提供更便捷的短信服务体验。

短信API通信流程包括几个步骤,如用户认证、短信发送、短信接收、状态回调等。

下面我们将详细介绍短信API通信流程的每一个步骤。

1. 用户认证用户认证是短信API通信流程的第一步,通过用户认证可以确保通信双方的身份合法性。

用户需要向短信服务提供商申请API密钥,然后使用API密钥进行认证。

API密钥通常是一串长的字符串,通过它可以识别用户的身份。

用户认证一般通过HTTP Basic Authentication或OAuth等方式进行,当用户发送请求时,需要在请求头中包含认证信息。

例如,使用HTTP Basic Authentication时,可以在请求头中添加Authorization字段,其格式为"Basic base64(username:password)"。

服务提供商收到请求后,会验证认证信息的有效性,如果认证通过,则允许用户进行后续操作。

2. 短信发送短信API通信流程的下一步是短信发送,用户可以通过API将短信发送到指定的手机号码。

在发送短信之前,用户需要构造发送请求,并携带必要的参数。

发送请求通常包括以下参数:- 接收手机号码:指定短信的接收者手机号码,可以是单个号码或多个号码。

- 短信内容:要发送的短信内容,通常是文字或链接等。

- 其他参数:如短信模板、签名、发送时间等。

用户发送短信请求后,短信服务提供商会对请求进行处理,验证参数的有效性,并将短信发送给目标手机号码。

发送完成后,服务提供商会返回发送结果,包括短信ID、状态码等信息。

3. 短信接收短信API通信流程的另一重要步骤是短信接收,用户可以通过API接收收到的短信信息。

短信平台服务协议(二)7篇

短信平台服务协议(二)7篇

短信平台服务协议(二)7篇篇1甲方(客户):_____________________乙方(短信平台服务提供商):_____________________鉴于甲方需要乙方提供短信平台服务,双方在平等、自愿、公平的基础上,根据中华人民共和国有关法律、法规的规定,就短信平台服务事宜达成如下协议:一、服务内容1. 乙方提供的服务内容包括但不限于:短信发送、短信接收、短信存储及短信API接口服务等。

2. 甲方应按照乙方规定的使用规则和要求使用短信平台服务。

二、服务期限1. 本协议的服务期限为______年,自协议生效之日起计算。

2. 双方可在服务期限届满前协商续签协议。

三、服务费用1. 甲方应按照约定的方式和时间支付短信平台服务费。

2. 乙方提供的短信平台服务费用明细如下:_____________________。

3. 如甲方未按约定支付费用,乙方有权暂停提供短信平台服务。

四、服务标准与质量保证1. 乙方应保证短信平台服务的稳定运行,确保甲方正常使用。

2. 乙方提供的短信平台服务应满足以下标准:__________(具体服务标准)。

3. 如因乙方原因导致短信平台服务出现故障,乙方应及时采取补救措施,并承担相应的违约责任。

五、信息安全与保密条款1. 双方应保护对方的商业机密和隐私信息,未经对方同意,不得泄露、使用或向第三方提供对方的商业机密和隐私信息。

2. 双方应采取必要的技术和管理上的安全措施,保障短信平台服务的信息安全。

六、违约责任1. 如一方违反本协议的约定,应承担违约责任,并赔偿对方因此造成的损失。

2. 如因乙方原因导致短信平台服务无法正常使用,乙方应按照实际受影响的服务时间和约定的服务费用计算违约金。

七、协议解除与终止1. 在本协议有效期内,经双方协商一致,可以解除本协议。

2. 如发生以下情况之一,乙方有权单方解除本协议:(1)甲方违反国家法律法规的规定使用短信平台服务;(2)甲方严重违反本协议约定,且未能在乙方通知的期限内改正。

易语言短信验证码通知代码示例

易语言短信验证码通知代码示例

.版本2.支持库iconv.支持库EXMLParser.程序集窗口程序集_启动窗口.子程序__启动窗口_创建完毕.子程序账户信息判断, 逻辑型, 公开.如果真(接口名.内容="")信息框("请输入用户名", 0, )返回(假).如果真结束.如果真(接口密.内容="")信息框("请输入密码", 0, )返回(假).如果真结束返回(真).子程序发送数据判断, 逻辑型, 公开.如果真(手机号.内容="")信息框("请输入手机号码", 0, )返回(假).如果真结束.如果真(短信内容.内容="")信息框("请输入要发送的内容", 0, )返回(假).如果真结束返回(真).子程序_按钮1_被单击.局部变量节点名数组, 文本型, , "0".局部变量子节点数, 整数型.局部变量i, 整数型.如果真(取反(账户信息判断()))返回().如果真结束.如果真(取反(发送数据判断()))返回().如果真结束状态标签.标题=短信发送(接口名.内容, 接口密.内容, 手机号.内容, 短信内容.内容) xml文件名=取当前目录() +"\data\submit.xml"状态标签.标题=到文本(编码转换(到字节集(状态标签.标题), #编码_UTF_8, #编码_GBK, ))写到文件(xml文件名, 到字节集(状态标签.标题))xml.导入(xml文件名)xml.取根节点名(根节点)xml.取子节点数(根节点, 子节点数).如果真(子节点数>0)xml.取子节点名(根节点, 节点名数组)输出调试文本(节点名数组[1])输出调试文本(节点名数组[2])输出调试文本(节点名数组[3])输出调试文本(xml.取节点值文本(根节点+"/code", ))输出调试文本(xml.取节点值文本(根节点+"/msg", ))输出调试文本(xml.取节点值文本(根节点+"/smsid", ))状态标签.标题="状态码:" +xml.取节点值文本(根节点+"/code", ) +#换行符+"描述:" +xml.取节点值文本(根节点+"/msg", ) +#换行符+"流水号:" +xml.取节点值文本(根节点+"/smsid", ).如果真结束xml.释放()返回()返回().子程序_按钮2_被单击.局部变量节点名数组, 文本型, , "0".局部变量子节点数, 整数型.局部变量i, 整数型.如果真(取反(账户信息判断()))返回().如果真结束状态标签.标题=剩余条数(接口名.内容, 接口密.内容)xml文件名=取当前目录() +"\data\getnum.xml"状态标签.标题=到文本(编码转换(到字节集(状态标签.标题), #编码_UTF_8, #编码_GBK, ))写到文件(xml文件名, 到字节集(状态标签.标题))xml.导入(xml文件名)xml.取根节点名(根节点)xml.取子节点数(根节点, 子节点数).如果真(子节点数>0)xml.取子节点名(根节点, 节点名数组)输出调试文本(节点名数组[1])输出调试文本(节点名数组[2])输出调试文本(节点名数组[3])输出调试文本(xml.取节点值文本(根节点+"/code", ))输出调试文本(xml.取节点值文本(根节点+"/msg", ))输出调试文本(xml.取节点值文本(根节点+"/num", ))状态标签.标题="状态码:" +xml.取节点值文本(根节点+"/code", ) +#换行符+"描述:" +xml.取节点值文本(根节点+"/msg", ) +#换行符+"条数:"+xml.取节点值文本(根节点+"/num", ).如果真结束xml.释放()返回().子程序GBK编码转换, 文本型, 公开, 将一个GBK编码的文本转换为URL编码,返回一个URL编码.参数文本, 文本型, , 需要转换为URL编码的GBK编码的文本.局部变量GBK文本, 字节集.局部变量URL码, 文本型.局部变量n, 整数型GBK文本=到字节集(文本).计次循环首(取字节集长度(GBK文本), n)URL码=URL码+"%" +取十六进制文本(GBK文本[n]).计次循环尾()返回(URL码).子程序UTF8编码转换, 文本型, 公开, 将一个UTF8编码的文本转换为URL编码,返回一个URL编码.参数文本, 文本型, , 需要转换为URL编码的UTF8编码的文本.局部变量URL码, 文本型.局部变量n, 整数型.局部变量UTF8文本, 字节集UTF8文本=编码转换(到字节集(文本), #编码_GBK, #编码_UTF_8, ).计次循环首(取字节集长度(UTF8文本), n)URL码=URL码+"%" +取十六进制文本(UTF8文本[n]).计次循环尾()返回(URL码).子程序_分组框4_鼠标左键被按下, 逻辑型.参数横向位置, 整数型.参数纵向位置, 整数型.参数功能键状态, 整数型互亿无线短信平台公司介绍:互亿无线成立于2004年,公司主营业务为云通信及虚拟商品分发服务;自成立以来,累计服务客户超过10万家。

记录移动云MAS短信平台发送模板短信+获取回执状态

记录移动云MAS短信平台发送模板短信+获取回执状态

记录移动云MAS短信平台发送模板短信+获取回执状态直接上代码,清晰明了(所有发送短信代码是写在⼀个⼯具类),也参考了⽹上⼀些博主的⽂章,⾮常感谢,以下内容只是记录平时做东西的内容,如有不正确的地⽅,欢迎指正。

PS:(写在前⾯)需要注意的⼏个点:(1)需要先在mas平台上配置相关信息和接⼝(主页-管理-接⼝管理),https请求需要将短信平台上的短信接⼝创建为http协议模式,否则请求失败;http请求同理,只要短信接⼝的⽤户名、密码和协议对应正确,⼀般没有太⼤问题;(2)如果是发送模板短信需要先申请短信模板,且传⼊参数必须和模板中变量所包含的类型⼀致,否则mas平台上数据校验⽆法通过(有条件还是获取⼀下回执报告,因为有时候即使响应状态返回success,最后没有收到短信,进⼊平台查看可以看到其实回执状态报错,并没有发送成功);(3)如果短信模板中的变量长度不能满⾜需要,可以联系客户经理申请特殊变量,特殊变量⼀个模板中可以使⽤两次;(4)https短信接⼝⽂档中写得很清楚:【请客户侧忽略证书校验,移动侧不提供证书秘钥】,所以在做post请求的时候⼀定要记得【忽略证书校验】,否则请求失败,返回值为空;http请求不⽤管。

(5)短信响应状态成功返回的是:{"msgGroup":"0906163415000000332084","rspcod":"success","success":true},有错误的时候是:{ "msgGroup": "", "rspcod": "InvalidUsrOrPwd","success": false}(6)短信发送成功回执状态返回的是“[]”,有错误的时候是:[{"errorCode":"CM:2007","mobile":"138********","msgGroup":"0906144506000001364223","receiveDate":"20210906244506","reportStatus":"CM:2007","submitDate":"20210906144506"}](7)上⾯说的其实平台上和提供的⽂档中基本都有说明,多看提供的接⼝⽂档,对实现⾃⼰想要的功能有帮助1.SMSUtil.javaa.通过https请求发送模板短信(⽹上很多的都是⽤http⽅式请求,只不过获取回执状态需要⾃⼰搭建http服务,太菜了感觉⽐较⿇烦就采⽤了https 请求,可以⾃⼰主动获取回执报告,这个因⼈⽽异)1/**2 * 云MAS-发送模板短信(https)3 *4 * @param mobiles ⼿机号5 * @param templateId 模板id6 * @param param 参数列表7 * @return8 * @throws UnsupportedEncodingException9*/10public static AjaxResult sendTemplateSms(String mobiles, String templateId, List<String> param) throws UnsupportedEncodingException {11 apId="xxx";//⽤户名12 secretKey="xxx";//密码13 ecName = "xxx"; //集团名称14 sign = "xxx"; //⽹关签名编码15 addSerial = ""; //拓展码填空16 templateurl = "https://112.35.10.201:28888/sms/tmpsubmit";//和http请求地址不⼀样 http://112.35.1.155:1992/sms/tmpsubmit1718//发送短信--start--19 String params = null;20if(param != null){21 params = JSON.toJSONString(param.toArray());22 }else{23 params = "[]";24 }25 SendRequest submitReq = new SendRequest();26 submitReq.setApId(apId);27 submitReq.setEcName(ecName);28 submitReq.setSecretKey(secretKey);29 submitReq.setParams(params);30 submitReq.setMobiles(mobiles);31 submitReq.setSign(sign);32 submitReq.setAddSerial(addSerial);33 submitReq.setTemplateId(templateId);3435 StringBuffer stringBuffer = new StringBuffer();36 stringBuffer.append(submitReq.getEcName());37 stringBuffer.append(submitReq.getApId());38 stringBuffer.append(submitReq.getSecretKey());39 stringBuffer.append(submitReq.getTemplateId());40 stringBuffer.append(submitReq.getMobiles());41 stringBuffer.append(submitReq.getParams());42 stringBuffer.append(submitReq.getSign());43 stringBuffer.append(submitReq.getAddSerial());44 String encode = "";45try {46//接⼝要求参数为MD5加密后的值47 submitReq.setMac(Md5Utils.hash(stringBuffer.toString()));48 String reqText = JSON.toJSONString(submitReq);49//base64编码50 encode =new String(Base64.encodeBase64Chunked(reqText.getBytes("UTF-8"))); //有中⽂时使⽤UTF-851 } catch (UnsupportedEncodingException e1) {52 e1.printStackTrace();53 }54 String resStr = "";55try {56 resStr = new String(HttpUtils.sendPostTrust(templateurl,encode,"utf-8","POST"));//https链接57 } catch (Exception e) {58 e.printStackTrace();59 }60//发送短信--end--6162//响应状态、回执状态处理--start--63 SendResponse sendRes = JSON.parseObject(resStr,SendResponse.class);//响应状态64 String receiptReport=getReport(apId,secretKey,ecName);//回执状态66 String errorCode="";67if(receiptReport!="[]"){68 JSONArray jsonArray= JSONArray.parseArray(receiptReport);69if(receiptReport.contains("errorCode")){70for(int index=0;index<jsonArray.size();index++){71 JSONObject jsonObject = jsonArray.getJSONObject(index);72if(jsonObject.getString("mobile").equals(mobiles)) {73 errorCode=jsonObject.get("errorCode").toString();74 }75 }76 }77 }78else{79 errorCode="";80 }81if(sendRes.getSuccess() && !"".equals(sendRes.getMsgGroup()) && "success".equals(sendRes.getRspcod())){ 82switch (sendRes.getRspcod()) {83case "success":84if (errorCode != null && errorCode != "") {85return AjaxResult.error(11, "其他错误:" + errorCode+",请联系管理员!");86 } else {87return AjaxResult.error(0, "发送成功");88 }89case "IllegalMac ":90return AjaxResult.error(1, "mac校验不通过");91case "IllegalSignId ":92return AjaxResult.error(2, "⽆效的签名编码");93case "InvalidMessage ":94return AjaxResult.error(3, "⾮法消息,请求数据解析失败");95case "InvalidUsrOrPwd ":96return AjaxResult.error(4, "⾮法⽤户名/密码");97case "NoSignId ":98return AjaxResult.error(5, "未匹配到对应的签名信息");99case "TooManyMobiles ":100return AjaxResult.error(6, "⼿机号数量超限,应≤5000");101default:102return AjaxResult.error(-1, "系统异常");103 }104 }105else{106return AjaxResult.error(-2,"请求异常");107 }108//响应状态、回执状态处理--end--109 }110111//获取状态报告112public static String getReport(String apId,String secretKey,String ecName){113 String reporturl = "https://112.35.10.201:28888/sms/report";114115 SendRequest submitReq = new SendRequest();116 submitReq.setApId(apId);117 submitReq.setEcName(ecName);118 submitReq.setSecretKey(secretKey);119120 StringBuffer stringBuffer = new StringBuffer();121 stringBuffer.append(submitReq.getEcName());122 stringBuffer.append(submitReq.getApId());123 stringBuffer.append(submitReq.getSecretKey());124 stringBuffer.append(submitReq.getTemplateId());125 String encode = "";126try {127//接⼝要求参数为MD5加密后的值128 submitReq.setMac(Md5Utils.hash(stringBuffer.toString()));129 String reqText = JSON.toJSONString(submitReq);130//base64编码131 encode =new String(Base64.encodeBase64Chunked(reqText.getBytes("UTF-8"))); //有中⽂时使⽤UTF-8 132 } catch (UnsupportedEncodingException e1) {133 e1.printStackTrace();134 }135 String receiptReport = "";136try {137 receiptReport = new String(HttpUtils.sendPostTrust(reporturl,encode,"utf-8","POST"));//https链接138139 } catch (Exception e) {140 e.printStackTrace();141 }142return receiptReport;143 }2.HttpUtils.java---->sendPostTrust1//添加信任主机2private static void trustAllHosts() {3// 创建不验证证书链的信任管理器这⾥使⽤的是x509证书4 TrustManager[] trustAllCerts = new TrustManager[]{new TrustAnyTrustManager() {5public java.security.cert.X509Certificate[] getAcceptedIssuers() {6return new java.security.cert.X509Certificate[]{};7 }89public void checkClientTrusted(X509Certificate[] chain, String authType) {10 }1112public void checkServerTrusted(X509Certificate[] chain, String authType) {13 }14 }};15// 安装所有信任的信任管理器16try {17 SSLContext sc = SSLContext.getInstance("TLS");18 sc.init(null, trustAllCerts, new java.security.SecureRandom());19//HttpsURLConnection通过SSLSocket来建⽴与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory⽣成的。

腾讯云短信API文档说明书

腾讯云短信API文档说明书

短信API文档产品文档【版权声明】©2013-2019 腾讯云版权所有本文档著作权归腾讯云单独所有,未经腾讯云事先书面许可,任何主体不得以任何形式复制、修改、抄袭、传播全部或部分本文档内容。

【商标声明】及其它腾讯云服务相关的商标均为腾讯云计算(北京)有限责任公司及其关联公司所有。

本文档涉及的第三方主体的商标,依法由权利人所有。

【服务声明】本文档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整。

您所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除非双方另有约定,否则,腾讯云对本文档内容不做任何明示或模式的承诺或保证。

文档目录API文档简介API文档简介最近更新时间:2021-03-23 15:45:11短信 API 升级到3.0 版本。

全新的 API 接口文档更加规范和全面,统一的参数⻛格和公共错误码,统一的SDK/CLI 版本与 API 文档严格一致,给您带来简单快捷的使用体验。

支持全地域就近接入让您更快连接腾讯云产品。

腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供国内短信和国际/港澳台短信服务。

国内短信验证秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,稳定可靠。

腾讯云短信旨在帮助广大开发者快速灵活接入高质量的国内、国际/港澳台短信服务。

说明:本章节短信 API 接口均为最新 API 3.0 接口,后续短信相关新增功能都会在此章节更新。

我们强烈推荐您使用最新 API 3.0 接口。

2024年短信平台定制方案

2024年短信平台定制方案

2024年短信平台定制方案____年短信平台定制方案一、引言短信平台是一种流行且有效的沟通工具,广泛应用于企业与客户之间的信息交流、市场推广和服务通知等方面。

为了满足____年的市场需求,我们定制了一套全新的短信平台方案,以提高短信发送的效率、提供更多的功能和更好的用户体验。

二、整体架构设计新的短信平台将采用分布式架构,以提高系统的稳定性和可扩展性。

根据用户的需求,我们将设计一个高可用性的系统,以确保短信发送的稳定性和可靠性。

1. 硬件架构新的短信平台将采用云平台的虚拟化技术,以提供高性能和高可用性的硬件环境。

我们将使用多台云服务器来部署短信平台的不同模块,以确保系统的稳定和可靠。

2. 软件架构新的短信平台将采用微服务架构,以便于每个模块的独立开发和部署。

我们将使用容器化技术来实现模块的隔离和资源的优化,以提高整体系统的效率和稳定性。

三、核心功能设计新的短信平台将提供以下核心功能,以满足用户的需求:1. 短信发送用户可以通过短信平台发送短信到指定的手机号码。

我们将提供高并发的短信发送服务,以确保短信的及时送达和稳定性。

2. 短信模板管理用户可以自定义短信模板,以便快速生成各种类型的短信。

我们将提供一个可视化的模板编辑器,以便用户轻松创建和编辑模板。

3. 短信群发用户可以通过选择指定的手机号码,进行批量短信发送。

我们将提供多种群发方式,包括按照分组、按照标签、按照指定条件等方式进行短信群发。

4. 短信报表分析用户可以查看短信发送的报表和统计数据,以便了解短信发送的情况和效果。

我们将提供图表和数据分析工具,以便用户进行数据的可视化分析。

5. 短信接口对接用户可以通过短信接口对接短信平台,以便实现短信的自动发送和集成。

我们将提供丰富的接口文档和示例代码,以便用户进行对接。

四、安全与稳定性设计为了保障短信平台的安全和稳定性,我们将采取以下措施:1. 数据加密用户的数据将使用加密算法进行加密存储和传输,以确保数据的安全性和完整性。

短信平台技术方案通用版

短信平台技术方案通用版

短信平台技术方案通用版目录一、内容概览 (3)二、短信平台技术原理 (3)2.1 短信网关 (5)2.2 服务器端处理 (6)2.3 客户端交互 (8)2.4 传输协议 (9)三、短信平台功能模块 (10)3.1 用户管理模块 (12)3.1.1 用户注册 (13)3.1.2 用户登录 (14)3.1.3 用户信息管理 (15)3.2 短信发送模块 (16)3.2.1 消息模板管理 (18)3.2.2 发送记录查询 (19)3.2.3 发送状态监控 (20)3.3 短信接收模块 (21)3.3.1 接收设置 (23)3.3.2 消息提取 (24)3.3.3 消息状态反馈 (25)3.4 数据统计模块 (26)3.4.1 发送统计 (27)3.4.2 接收统计 (29)3.4.3 效率分析 (29)四、短信平台系统架构 (30)4.1 分层架构 (32)4.2 组件关系 (33)4.3 数据流 (34)五、短信平台安全性设计 (36)5.1 数据加密 (37)5.2 认证机制 (38)5.3 防火墙与入侵检测 (39)六、短信平台性能优化 (40)七、短信平台部署方案 (41)7.1 硬件需求 (42)7.2 软件环境 (43)7.3 部署步骤 (44)八、短信平台维护与升级 (45)8.1 日常维护 (46)8.2 故障排查 (47)8.3 版本升级 (48)九、案例分析 (49)9.1 成功案例介绍 (50)9.2 应用场景分析 (51)9.3 实施效果评估 (52)十、总结与展望 (53)10.1 技术总结 (54)10.2 发展趋势 (55)10.3 未来展望 (56)一、内容概览本技术方案旨在提供一个通用、高效且可扩展的短信平台,以满足不同行业和场景的短信发送需求。

该平台将采用模块化设计,包括短信网关、短信路由、短信模板管理、用户管理、统计分析等核心功能模块。

通过高度集成化的设计和易于扩展的架构,本方案能够帮助企业快速实现短信服务的部署和管理,提升业务效率和客户沟通质量。

百度api短信开发

百度api短信开发

百度api短信开发公司原来有⼀个短信发送的功能,是调⽤第三⽅的,但是很不稳定,时不时就收不到短信,但是钱已经扣了。

对于这样的事,谁都忍受不了的。

于是想找⼀个稳定短信发送平台,第⼀想到的是阿⾥云,百度。

在这两个平台上公司都有认证了,于是省了很多事。

现在开始吧。

找到百度开放云登录窗⼝,然后登录,进⼊控制中⼼,然后在产品服务中找到,如下图简单消息服务SMS。

前提是账号已经认证了。

点击它跳转到⾸先是短信签名申请,这个可以根据他们提供的⽂档⼀⼀操作,盖章,拍照上传,等待他们审核(⼤概两个星期吧)。

审核成功,然后是短信模版申请,然后审核(⼤概⼀两天)数量没有限制。

这个时候其实我们可以根据他们⽂档进⾏开发了,只要签名和短信模板审核已通过我们就可以测试了。

他们有Java等,SDK,但是没有.net的,因此我只能调⽤他们的API实现。

⾸先要认证。

这个我是偷了⼀回懒。

由于有同事做好了这个,他之前实现了⼀个百度api 发送邮箱的功能。

我只要把他那部分认证的代码搬过来就是了。

如果愿意看,也是可以实现的。

我把认证的代码搬来。

这个⽅法实现。

'https:///zh-cn/library/system.security.cryptography.hmacsha256(v%3DVS.95).aspx'/s/blog_5eded52b0100e0mq.htmlFunction GetSigningKeyByHMACSHA256HEX(ByVal SecretAccessKey As String, ByVal authStringPrefix As String) As StringDim Livehmacsha256 As HMACSHA256 = New HMACSHA256(Encoding.UTF8.GetBytes(SecretAccessKey))Dim LiveHash As Byte() = puteHash(Encoding.UTF8.GetBytes(authStringPrefix))Dim SigningKey As String = HashEncode(LiveHash)Return SigningKeyEnd FunctionFunction GetSignatureByHMACSHA256HEX(ByVal SigningKey As String, ByVal CanonicalRequest As String) As StringDim Livehmacsha256 As HMACSHA256 = New HMACSHA256(Encoding.UTF8.GetBytes(SigningKey))Dim LiveHash As Byte() = puteHash(Encoding.UTF8.GetBytes(CanonicalRequest))Dim Signature As String = HashEncode(LiveHash)Return SignatureEnd Function'将字符串全部变成⼩写。

移动代理服务器MAS(WebService)

移动代理服务器MAS(WebService)


IP地址为MAS服务器IP,API编码、用户名、密码为新增API接口中的接口编码、
登录用户和登录密码。数据库名称默认为mas,连接信息要与实现环境一致,否则
不能正常初始化。

在以上参数都填写完整后,那么请点击”init”按钮,出现初化成功后就可以正常
收发短信了。
webservice API接口初始化失败有哪些原因?
同的内容,只有循环调用sendsm方法来实现。
webservice API如何收发PDU短信?

首先:在MAS中新加了一个配置参数,具体如下:

usr/local/mas/WEB-INF/umaconfig.xml文件中增加PDU编码方式配置
参数<msgFmt_pdu></msgFmt_pdu>,此参数为字符串,每一种编码方
-5 数据库查询失败;

-6 参数错误;

-7 API编码非法;

-8 参数过长;

-9 没有初始化或初始化失败;

-10 API接接口处于暂停状态;

-11 短信网关未连接;
通过webservice API接口发送的短信在MAS的数据库中是否有发送记录?

在MAS数据库中不会保留通过API接口发送的记录 ,只保留了成功发送的短信。
编码; 15:含GB汉字)
客户在使用MAS1.2且客户需要使MAS跟他自己的PHP或jsp的网站相结合该建议 客户使用哪种语言的API接口?

请建议客户使用WEB SERVICE 接口
MAS1.2的WEB SERVICE如何部署服务端?

先将WEB SERVICE API包的bin目录下axis文件夹拷贝到MAS机器 tomcat

境外短信营销方案

境外短信营销方案

境外短信营销方案背景随着互联网的发展,域名注册商、电商平台等机构大量涌现,而它们之间的竞争也越发激烈。

在这种情况下,营销和广告宣传就变得至关重要,而短信营销成为了一种极具吸引力的方式。

不过,在国内,短信的收发成本相对较高,因此境外短信营销成为了一种越来越受欢迎的选择。

本文将介绍一些境外短信营销方案。

方案一:使用境外短信服务提供商境外短信服务提供商是一些公司,他们通过建立全球性通讯网络,可以为发送方提供大量可以使用的短信号码以及接收人号码的数据。

使用境外短信服务提供商进行短信营销有以下几个优势:全球覆盖境外短信服务提供商拥有全球范围内的通讯网络覆盖,因此可以发送短信到世界各地的接收方。

低成本相较于国内短信发送成本,境外短信的价格相对较低,这是由于境外短信通道的采购成本较低。

数据保障境外短信服务提供商可以为客户提供完整、准确和及时的数据保障,使短信发送变得更加稳定和可靠。

合法性由于境外短信服务提供商是由相关法律规定的公司运营的,因此其服务肯定是合法的,并且为用户提供了一定的法律保护。

方案二:使用短信平台在一些国家和地区,可以使用一些体积较小的手持终端和短信平台进行境外短信发送。

该方案的优势如下:更低的成本短信平台是从政府执照中授权的第三方公司响应用户要求提供短信服务的平台。

如果使用短信平台进行短信营销,则需要支付的成本将远低于使用境外短信服务提供商。

高可靠性短信平台具有非常高的可靠性。

在使用时,它可以提供一些实用的功能,例如短信记账、短信充值等,使得短信营销更加方便。

多种语言支持短信平台的一个显著优势是提供多种语言支持,比如英语、法语、德语、日语等等。

这也意味着你可以选择向不同的国家和地区发送不同的语言短信来满足营销需求。

方案三:使用API进行境外短信营销使用API进行境外短信营销是现今最先进的方法之一。

它的好处非常多:实时反馈使用API进行境外短信发送可以实时反馈营销效果,例如,你可以统计实时投递和成功收到短信的数量,以及未发送短信的数量。

短信API源代码(电信移动自由转换)

短信API源代码(电信移动自由转换)

维美WEB 短信服务说明书Tip 1: 在调用其他函数之前,请确认WebService地址电信地址: /server/Service.asmx网通地址: /server/Service.asmxTip 2:批量发送,为保持最快响应速度,建议每次1000条,尽量不要超过2000。

Tip 3:尽量不要采用多线程。

SendMessage函数功能描述:发送短信参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码输入Message string 短信内容输入destmobile string 建发送号码,每个号码以西文分号结尾PS: 发送号码建议每次提交不要超过2000条。

并且每个号码后面需要带一个西文分号返回值返回值类型说明>0int 发送成功的条数-1 int 用户名或者密码不正确-2 int 帐号余额不足-3 int 没有匹配的通道-5 int 没有发送的号码-97 int 用户名或者密码不合法-100 int 捕获未知异常UserLogin函数功能描述:验证用户合法性参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码返回值返回值类型说明1int 用户合法-1 int 用户不合法-100 int 捕获未知异常UserNums函数功能描述:获取帐号的余额参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码返回值返回值类型说明>=0int 用户的余额数目-1 int 用户不合法-100 int 捕获未知异常UserChannels函数功能描述:获取帐号的通道参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码返回值返回值类型说明1int 网关2 int 卡发-1 int 没有定义-100 int 捕获未知异常PassChange函数功能描述:修改帐号的密码参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码输入Newpasswrod String 新的密码返回值返回值类型说明1int 修改成功-1 int 修改失败-100 int 捕获未知异常Get_Sms 函数功能描述:接收短信函数参数说明类别参数名称类型说明输入username string 用户帐号输入passwrod string 用户密码返回值:Save_SMS 数组类Save_SMS 描述:每一条回复短信对应一个Save_SMS类别参数名称类型说明输出Mobile string 获取此Sava_SMS内存储的手机号码输出Content string 获取此Sava_SMS内存储的短信内容输出Time string 获取此Sava_SMS内存储的回复时间。

使用腾讯云发送短信步骤

使用腾讯云发送短信步骤

使⽤腾讯云发送短信步骤已开通短信服务,具体操作请参见。

如需发送国内短信,需要先购买。

已准备依赖环境:PHP 5.6.33 及以上版本。

已在访问管理控制台 >页⾯获取 SecretID 和 SecretKey。

SecretID ⽤于标识 API 调⽤者的⾝份。

SecretKey ⽤于加密签名字符串和服务器端验证签名字符串的密钥,SecretKey 需妥善保管,避免泄露。

2.安装 SDKcomposer require tencentcloud/tencentcloud-sdk-php3.查看thinkphp6是否已经安装成功了4.在框架中,控制器中建⽴⼀个⽅法(sendSms),⽤于发送短信5.框架中引⼊发送短信的类⽂件// 导⼊对应产品模块的clientuse TencentCloud\Sms\V20210111\SmsClient;// 导⼊要请求接⼝对应的Request类use TencentCloud\Sms\V20210111\Models\SendSmsRequest;use TencentCloud\Common\Exception\TencentCloudSDKException;use TencentCloud\Common\Credential;// 导⼊可选配置类use TencentCloud\Common\Profile\ClientProfile;use TencentCloud\Common\Profile\HttpProfile;6.实例代码public function sendSms(){try {/* 必要步骤:* 实例化⼀个认证对象,⼊参需要传⼊腾讯云账户密钥对secretId,secretKey。

* 这⾥采⽤的是从环境变量读取的⽅式,需要在环境变量中先设置这两个值。

* 你也可以直接在代码中写死密钥对,但是⼩⼼不要将代码复制、上传或者分享给他⼈,* 以免泄露密钥对危及你的财产安全。

短信平台API接口使用手册

短信平台API接口使用手册

成功,返回结果 <ReceiveMessage> <Result total="2" mess="" /> <Message> <SendNum>1385196xxxx</SendNum> <SendTime>2009-01-08 11:10:20.0</SendTime> <MemberName>xxxx</MemberName> <MemberCompany>国研科技</MemberCompany> <Content>浏试接收服务</Content> </Message> <Message> <SendNum>138519xxxxx</SendNum> <SendTime>2009-01-08 11:41:38.0</SendTime> <MemberName>xxxx</MemberName> <MemberCompany>国研科技</MemberCompany>
1.2 企业接口调用方式
企业接口函数的调用方式, 此处列出各种语言及开发环境调用的示例,具体环境还 需要作实际的修改。
1.2.1 C#中的调用
在 C#中调用 WebService 很简单, 在项目中添加一个 WEB 引用, 打入服务器的地 址:http:// 10.0.0.14:1080/Webservice/SendShortMessage.asmx 会列出此服务下面的 所有方法,点击添加引用即可,在代码里面可以像本地类一样的使用 WebService 的服 务,例如,你建立的 WebService 的引用为 testSvc,那么调用的方式为: testSvc. SendShortMessage obj = new testSvc. SendShortMessage(); xml = obj. ExecSendBatchMessage (“messageContent”, “sender”, “receivers” ,

云片短信平台

云片短信平台

云片短信平台云片短信平台是一家专业提供短信服务的云端平台。

通过云片短信平台,用户可以方便地发送短信、管理短信发送记录,并且可以通过云片提供的API接口,将短信功能集成到自己的应用程序中。

1. 云片短信平台的特点1.1 稳定可靠云片短信平台采用高可用架构,确保平台的稳定性和可靠性。

平台具备高并发处理能力,能够应对大量的短信发送请求。

1.2 全球覆盖云片短信平台可以向全球范围内的手机用户发送短信。

无论是国内还是国际短信,都可以通过云片平台进行发送。

1.3 丰富的功能云片短信平台提供多样化的功能,满足用户对于短信发送的各种需求。

用户可以自定义发送短信的内容和签名,还可以进行短信模板的管理和使用。

1.4 灵活的接口云片短信平台提供丰富的API接口,方便用户将短信发送功能集成到自己的应用程序中。

通过API接口,用户可以实现自动化的短信发送和管理。

2. 云片短信平台的使用流程2.1 注册云片账号用户需要在云片短信平台注册一个账号,并进行身份验证。

注册成功后,用户可以登录平台,开始使用短信发送服务。

2.2 充值账户余额在使用短信发送服务之前,用户需要先充值账户余额。

云片短信平台支持多种充值方式,包括支付宝、微信支付、银行转账等。

2.3 创建短信签名用户需要在云片短信平台创建一个短信签名。

短信签名是显示在短信内容前面的一段文字,用于展示短信的发送来源。

2.4 创建短信模板用户可以在云片短信平台创建短信模板。

短信模板是一种固定格式的短信内容,用户可以在发送短信时选择使用相应的模板,省去了每次发送短信都需要编写短信内容的麻烦。

2.5 发送短信在云片短信平台中,用户可以输入手机号码和短信内容,选择相应的短信签名和模板,然后点击发送按钮即可发送短信。

用户还可以选择发送时间和发送批次等参数。

2.6 管理发送记录在云片短信平台中,用户可以查看自己的短信发送记录,包括发送时间、发送状态等信息。

用户还可以导出发送记录,方便进行数据分析和统计。

MAS2.0API接口插件开发手册.

MAS2.0API接口插件开发手册.

中国移动代理服务器MAS V2.0API接口插件开发手册深圳市嘉讯软件有限公司2008年9月目录1.引言 (4)1.1.编写目的 (4)1.2.背景说明 (4)1.3.相关术语与缩略语解释 (4)2. API结构说明 (4)3. 运行环境 (5)4. 接口描述 (5)4.1.短信接口 (5)4.1.1. 接口说明 (5)4.1.2. 流程说明 (6)4.1.3. 主要类说明 (8)4.2. 彩信接口 (9)4.2.1. 接口说明 (9)4.2.2. 流程说明 (9)4.2.3. 主要类说明 (10)5. 开发步骤 (11)5.1. 在Mas服务器新建一个企业应用 (11)5.2.启动企业应用 (12)5.3.接口开发及使用举例 (12)5.3.1. ApiClientFactory类 (12)5.3.1.1. createSmsApiClient方法 (13)5.3.2. 短信接口 (13)5.3.2.1. SmsApiClient类 (13)5.3.2.1.1. setTimingConnect方法 (13)5.3.2.1.2. setConnectTime方法 (13)5.3.2.1.3. setConnectTimeout方法 (13)5.3.2.1.4. setSendTimeout方法 (13)5.3.2.1.5. start方法 (13)5.3.2.1.6. getConnStatusIAGW方法 (13)5.3.2.1.7. canelSms方法 (14)5.3.2.1.8. getStat方法 (14)5.3.2.1.9. getXCodeLength方法 (14)5.3.2.1.10. getSmsCount方法 (14)5.3.2.1.11. getSmsContentPreview方法 (14)5.3.2.1.12. loginOut方法 (14)5.3.2.1.13. getDestAddrsLimit方法 (14)5.3.2.1.14. sendSms方法 (14)5.3.2.2. SmsApiClientHandler类 (15)5.3.2.2.1. notifySmsSendResponse方法 (15)5.3.2.2.2. notifySmsDeliveryStatus方法 (15)5.3.2.2.3. notifySmsReception方法 (15)5.3.2.2.4. notifyCanelSmsList方法 (16)5.3.2.3. 短信开发客户端代码举例 (16)5.3.3. 彩信接口 (18)5.3.3.1. MmsApiClient类 (18)5.3.3.1.1. setTimingConnect方法 (18)5.3.3.1.2. setConnectTime方法 (18)5.3.3.1.3. setConnectTimeout方法 (18)5.3.3.1.4. setSendTimeout方法 (19)5.3.3.1.5. start方法 (19)5.3.3.1.6. loginOut方法 (19)5.3.3.1.7. getConnStatusIAGW方法 (19)5.3.3.1.8. getDestAddrsLimit方法 (19)5.3.3.1.9. sendMms方法 (19)5.3.3.1.10. getStat方法 (20)5.3.3.1.11. canelMms方法 (20)5.3.3.2. MmsApiClientHandler类 (20)5.3.3.2.1. notifyMmsSendResponse方法 (20)5.3.3.2.2. notifyMmsDeliveryStatus方法 (21)5.3.3.2.3. notifyMmsReception方法 (21)5.3.3.2.4. notifyCanelMmsMobile方法 (21)5.3.3.3. 彩信多媒体消息内容格式定义说明 (22)5.3.3.3.1. 彩信多媒体内容类型 (22)5.3.3.3.2. 彩信多媒体内容加密 (22)5.3.3.3.3. 彩信多媒体内容编码 (22)5.3.3.3.4. 彩信多媒体内容支持附件的类型 (22)5.3.3.3.5. 彩信多媒体消息内容示例 (22)5.3.3.3.6. 彩信多媒体消息具体加密前后内容示例 (23)5.3.3.4. 彩信开发客户端代码举例 (24)5.3.4. API异常错误对应常量 (26)6. 注意事项 (26)7. 参考文档 (26)1.引言1.1.编写目的本手册详细描述了中国移动代理服务器(MAS)短信、彩信API的开发步骤以及注意事项。

短信服务平台方案

短信服务平台方案

短信服务平台方案概述短信服务平台是一种用于发送和接收短信的服务,它提供了一种快速、可靠且经济高效的方式来传递重要的信息。

由于短信的广泛使用和普及,短信服务平台在各个行业中得到了广泛的应用。

本文将介绍一个短信服务平台的方案,涵盖了平台的架构、功能和技术要点。

架构短信服务平台的架构一般包括以下几个组件:1.用户管理:用于管理用户的注册、登录、权限控制等功能。

用户可以通过用户管理组件进行账户管理,包括添加、修改和删除用户。

同时,用户管理组件也提供了用户权限的控制,以确保只有授权用户可以使用平台的功能。

2.短信发送管理:用于管理短信的发送。

通过短信发送管理组件,用户可以通过界面输入短信内容,选择收件人,设置发送时间等。

该组件还提供了短信发送的相关统计信息,例如发送成功率、发送时间、发送量等。

3.短信接收管理:用于管理短信的接收。

通过短信接收管理组件,用户可以接收到短信,并进行相关的操作,例如查看、回复、转发等。

该组件还可以对接收到的短信进行分类、存档和搜索等功能,以方便用户管理和查找信息。

4.短信模板管理:用于管理短信模板。

短信模板管理组件可以帮助用户创建和管理短信模板,以方便快速发送短信。

用户可以通过界面编辑短信模板的内容,同时可以设定模板的变量和参数,以便在发送短信时动态替换。

5.短信网关:用于实现短信的传递。

短信网关是短信服务平台的核心组件,它负责将用户发送的短信通过短信运营商的网关发送到接收方的手机上。

短信网关需要与短信运营商进行对接,通过短信协议进行通信。

6.数据存储:用于存储用户的短信、模板和统计信息。

数据存储一般使用关系型数据库来存储用户的数据,例如MySQL或PostgreSQL。

数据存储还可以使用缓存来提高短信发送和接收的性能和效率。

功能短信服务平台通常具有以下功能:1.短信发送:用户可以通过平台发送短信,包括文本短信、彩信等。

用户可以选择收件人,设置发送时间和发送方式。

用户还可以选择从已有的短信模板中选择或创建新的短信模板。

短信平台通用解决方案

短信平台通用解决方案

UMP短信平台解决方案2011年11月目录一、项目背景 (2)二、短信平台需求分析 (2)2.1 功能方面的需求 (2)2。

2 管理方面存在的需求 (3)2.3 运维方面的需求 (3)三、UMP短信平台解决方案概述 (4)3。

1 UMP短信平台功能 (4)3.2 UMP短信平台特点 (5)3。

3 优质通道资源介绍 (6)3.4 UMP短信平台通用解决方案的优势 (7)四、技术方案概述 (9)4.1 UMP短信平台系统结构图 (9)4.2 UMP短信平台系统模块构成 (9)4。

3 多业务系统对接 (9)4。

4 UMP短信发送管理 (11)4.5 机构集中管理 (11)4。

6 业务统计报表 (12)4.7 系统监控管理 (12)五、系统整体组网规划 (14)5。

1 系统整体组网规划图及介绍 (14)5.2 系统中硬件功能具体说明 (14)六、服务体系 (15)6.1 质量目标 (15)6。

2 服务支持 (15)6。

3 技术支持 (16)一、项目背景根据中国三大移动运营商公布的数据显示,截至2011年8月底,中国手机用户总数已达9.2726亿户。

随着中国手机用户的高速增长,手机短信已经成为人们日常信息快递的重要方式,企业短信作为一种企业与客户之间的通信方式,以其覆盖面广、快捷,无时空限制,低成本、精准营销等众多优势,已经被广泛应用于金融、快消、百货、售后服务、快递物流、教育、房地产、汽车、农业、政府等众多行业,成为现代企业信息化重要组成部分。

现代企业普遍面临着来自成本、生产率、产品销售以及客户服务等方面的竞争压力,拓展产品销售渠道、提高员工作业生产率、降低运营成本以及提升客户服务质量,是现代企业提升市场综合竞争能力的关键。

随着企业短信规模化应用,传统短信平台单一信息收发功能,已经不能完全满足现代企业管理的需求,所以同时兼顾多种短信业务、方便与客户系统对接、简单易行的操作与维护、高稳定、高可靠的移动信息化应用成为短信平台发展趋势。

移动云Mas发送普通短信和模板短信

移动云Mas发送普通短信和模板短信

移动云Mas发送普通短信和模板短信//实体类public class SubmitReq {private String ecName;//客户名称private String apId;//⽤户名private String secretKey;//密码private String mobiles;//⼿机号码逗号分隔。

(如“1813728****,1813727****,1813726****”)private String content;//发送短信内容private String sign;//⽹关签名编码,必填,签名编码在中国移动集团开通帐号后分配,可以在云MAS⽹页端管理⼦系统-SMS接⼝管理功能中下载。

private String addSerial;//扩展码,根据向移动公司申请的通道填写,如果申请的精确匹配通道,则填写空字符串(""),否则添加移动公司允许的扩展码。

private String templateId;//模板IDprivate String mac;//API输⼊参数签名结果,签名算法:将ecName,apId,secretKey,mobiles,content ,sign,addSerial按照顺序拼接,然后通过md5(32位⼩写)计算后得出的值。

private String params;public String getParams() {return params;}public void setParams(String params) {this.params = params;}public String getTemplateId() {return templateId;}public void setTemplateId(String templateId) {this.templateId = templateId;}public String getEcName() {return ecName;}public void setEcName(String ecName) {this.ecName = ecName;}public String getApId() {return apId;}public void setApId(String apId) {this.apId = apId;}public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}public String getMobiles() {return mobiles;}public void setMobiles(String mobiles) {this.mobiles = mobiles;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getSign() {return sign;}public void setSign(String sign) {this.sign = sign;}public String getAddSerial() {return addSerial;}public void setAddSerial(String addSerial) {this.addSerial = addSerial;}public String getMac() {return mac;}public void setMac(String mac) {this.mac = mac;}}//短信发送测试//短信发送测试import java.io.UnsupportedEncodingException;import mons.codec.binary.Base64;import com.huazi.projects.entity.SubmitReq;public class SmsSend {private static String apId="*****";//⽤户名private static String secretKey="*****";//⽤户密码private static String ecName = "*****";//集团名称(分组)private static String sign = "*****";//签名编码private static String addSerial = "";//拓展码public static String url = "http://112.35.1.155:1992/sms/tmpsubmit";//请求url 该接⼝为模板短信 //http://112.35.1.155:1992/sms/norsubmit //普通短信接⼝public static void main(String[] args) {//String[] param = {"*****","****"};//模板相关的变量参数String mobiles = "*******";//⼿机号,多个⼿机号⽤英⽂的 , 隔开String templateId = "*****"," ; //模板IDSmsSend.smsSend(templateId , param, mobiles);}//模板信息public static String smsSend(String templateId, String[] param,String mobiles) {String params = null;if(param != null){params = JsonUtil.object2json(param);}else{params = "[]";}SubmitReq submitReq = new SubmitReq();submitReq.setApId(apId);submitReq.setEcName(ecName);submitReq.setSecretKey(secretKey);submitReq.setParams(params);submitReq.setMobiles(mobiles);submitReq.setSign(sign);submitReq.setAddSerial(addSerial);submitReq.setTemplateId(templateId);StringBuffer stringBuffer = new StringBuffer();stringBuffer.append(submitReq.getEcName());stringBuffer.append(submitReq.getApId());stringBuffer.append(submitReq.getSecretKey());stringBuffer.append(submitReq.getTemplateId());stringBuffer.append(submitReq.getMobiles());stringBuffer.append(submitReq.getParams());stringBuffer.append(submitReq.getSign());stringBuffer.append(submitReq.getAddSerial());String encode = "";try {//接⼝要求参数为MD5加密后的值submitReq.setMac(Md5Util.MD5(stringBuffer.toString()));String reqText = JsonUtil.object2json(submitReq);//encode =new String(Base64.encodeBase64Chunked(reqText.getBytes("UTF-8"))); //有中⽂时使⽤UTF-8} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}String resStr = "";try {resStr = new String(HttpUtil.post(HttpUtil.ContentType_JSON_UTF8,url,encode.getBytes()));//http链接} catch (Exception e) {e.printStackTrace();}return resStr;}//普通信息public static String norsubmit(String url ,String content ,String mobiles){SubmitReq submitReq = new SubmitReq();submitReq.setApId(apId);submitReq.setEcName(ecName);submitReq.setSecretKey(secretKey);submitReq.setContent(content);//短信内容submitReq.setMobiles(mobiles);submitReq.setSign(sign);submitReq.setAddSerial(addSerial);StringBuffer stringBuffer = new StringBuffer();stringBuffer.append(submitReq.getEcName());stringBuffer.append(submitReq.getApId());stringBuffer.append(submitReq.getSecretKey());stringBuffer.append(submitReq.getMobiles());stringBuffer.append(submitReq.getContent());stringBuffer.append(submitReq.getSign());stringBuffer.append(submitReq.getAddSerial());String encode = "";String resStr = "";try {submitReq.setMac(Md5Util.MD5(stringBuffer.toString()));String reqText = JsonUtil.object2json(submitReq);encode =new String(Base64.encodeBase64Chunked(reqText.getBytes("UTF-8")));resStr = new String(HttpUtil.post(HttpUtil.ContentType_JSON_UTF8,url,encode.getBytes()));} catch (Exception e) {e.printStackTrace();}return resStr;}}//httpUtil⼯具类import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import .Authenticator;import .CookieHandler;import .CookieManager;import .CookiePolicy;import .HttpURLConnection;import .PasswordAuthentication;import .URL;import java.util.Map;import java.util.Map.Entry;public class HttpUtil {public static final String ContentType_BIN = "application/octet-stream";public static final String ContentType_FORM = "application/x-www-form-urlencoded";public static final String ContentType_XML_UTF8 = "text/plaint; charset=utf-8";public static final String ContentType_JSON_UTF8 = "application/json; charset=utf-8";public static final String ContentType_HTML = "text/html";public static final String ContentType_TXT = "text/plain";public static byte[] post(String contentType, String url, byte[] content) throws IOException {return doRequest(contentType, "POST", url, content, null);}public static byte[] get(String contentType, String url) throws IOException {return doRequest(contentType, "GET", url, null, null);}public static byte[] doRequest(String contentType, String method, String url, byte[] content, Map<String, String> headers) throws IOException { URL u = null;HttpURLConnection conn = null;//尝试发送请求try {u = new URL(url);conn = (HttpURLConnection) u.openConnection();conn.setRequestMethod(method);conn.setRequestProperty("Content-Type", contentType);if (headers != null && ! headers.isEmpty()) {for(Entry<String, String> item: headers.entrySet()){conn.setRequestProperty(item.getKey(), item.getValue());}}conn.setConnectTimeout(60000); //1 minconn.setReadTimeout(600000); //10 minconn.setUseCaches(false);if (content != null && content.length >0) {conn.setDoOutput(true);java.io.OutputStream paramOut = conn.getOutputStream();paramOut.write(content);paramOut.flush();paramOut.close();}ByteArrayOutputStream out = new ByteArrayOutputStream(102400);InputStream buffIn = new java.io.BufferedInputStream(conn.getInputStream());int buffsize = 8192;int bytesRead = 0;byte[] buffer = new byte[buffsize];while ((bytesRead = buffIn.read(buffer, 0, buffsize)) != -1)out.write(buffer, 0, bytesRead);out.flush();buffer = null;return out.toByteArray();} finally {if (conn != null) {conn.disconnect();}}}static {CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); }public static void setBasicAuth(String username, String passwd){Authenticator.setDefault(new BasicAuthenticator(username, passwd));}private static class BasicAuthenticator extends Authenticator {String userName;String password;public BasicAuthenticator(String userName, String password) {erName = userName;this.password = password;}protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password.toCharArray());}}}//MD5Util⼯具类package com.huazi.projects.util;import java.security.MessageDigest;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import mons.codec.binary.Base64;/*** MD5加密/验证⼯具类** @author bluesky**/public class Md5Util {static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };/*** ⽣成MD5码** @param plainText* 要加密的字符串* @return md5值*/public final static String MD5(String plainText) {try {byte[] strTemp = plainText.getBytes("UTF-8");MessageDigest mdTemp = MessageDigest.getInstance("MD5");mdTemp.update(strTemp);byte[] md = mdTemp.digest();int j = md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = md[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {return null;}}/*** ⽣成MD5码** @param plainText* 要加密的字符串* @return md5值*/public final static String MD5(byte[] plainText) {try {byte[] strTemp = plainText;MessageDigest mdTemp = MessageDigest.getInstance("MD5");mdTemp.update(strTemp);byte[] md = mdTemp.digest();int j = md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = md[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {return null;}}/*** 先进⾏HmacSHA1转码再进⾏Base64编码* @param data 要SHA1的串* @param key 秘钥* @return* @throws Exception*/public static String HmacSHA1ToBase64(String data, String key) throws Exception { SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1");mac.init(signingKey);byte[] rawHmac = mac.doFinal(data.getBytes());return Base64.encodeBase64(rawHmac).toString();}/*** 校验MD5码** @param text* 要校验的字符串* @param md5* md5值* @return校验结果*/public static boolean valid(String text, String md5) {return md5.equals(MD5(text)) || md5.equals(MD5(text).toUpperCase());}/**** @param params* @return*/public static String MD5(String... params) {StringBuilder sb = new StringBuilder();for (String param : params) {sb.append(param);}return MD5(sb.toString());}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

发送短信稳定的短信API来啦
稳定的短信API,99%到达率,及时响应,请务必添加图片验证码等防恶意攻击的机制,以防短信轰炸。

!注意:同1个号码同1个签名的内容30秒内只能发1条,1分钟内只能发2条,30分钟内只能发3条,详细请参考:/news/index/id/50
接口名称:短信api
接口平台:聚合数据
接口地址:/sms/send
支持格式:json/xml
请求方式:http get
请求示例:/sms/send?mobile=手机号码&tpl_id=短信模板ID&tpl_value=%23code%23%3D654654&key=
请求参数说明:
名称类型必填说明
mobile string 是接收短信的手机号码
tpl_id int 是短信模板ID,请参考个人中心短信模板设置
tpl_value string 是变量名和变量值对,如:#code#=431515,整串值需要urlencode。

如果你的变量名或者变量值中带有#&=中的任意一个特殊符号,请先分别进行utf-8 urlencode编码后再传递
key string 是应用APPKEY(应用详细页查询)
dtype string 否返回数据的格式,xml或json,默认json 返回参数说明:
名称类型说明
error_code int 返回码
reason string 返回说明
短信api调用JSON返回示例:
/****失败示例**/
{
"reason": "错误的短信模板ID,请通过后台确认!!!",
"result": [],
"error_code": 205402
}
/****成功示例**/
{
"reason": "短信发送成功",
"result": {
"count": 1, /*发送数量*/
"fee": 1, /*扣除条数*/
"sid": 2029865577 /*短信ID*/ },
"error_code": 0 /*发送成功*/
}。

相关文档
最新文档