移动MAS短信平台发送短信

Posted mact

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动MAS短信平台发送短信相关的知识,希望对你有一定的参考价值。

MAS短信平台发送短信分为两种方式

参考文档下载

一、sdk调用

 

using mas.ecloud.sdkclient;
using System;

namespace 短信发送

    class Program
    
        private static Client client = Client.instance;
        static void Main(string[] args)
        
            string url = "";//身份认证地址,向客户经理获取。
            string apId = "";//账号
            string secretKey = "";//密码
            string ecName = "";    //集团名称
            string sign = "";    //网关签名编码
            string mobiles = "";//电话号码
            string content = "测试短信发送";//短信内容
            bool loginResult = client.login(url, apId, secretKey, ecName);
            Console.WriteLine("登录结果:" + loginResult);
                if (loginResult)
                
                    // 发送短信 
                    int sendResult = client.sendDSMS(new string[]  mobiles , content, "", 5, sign, Guid.NewGuid().ToString());
                     Console.WriteLine("发送结果:" + sendResult);               

            

    

所需sdk

二、http调用

 

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace 短信发送

    public class SMSUtils
    
        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/norsubmit";//请求urlhttp://112.35.1.155:1992/sms/norsubmit
        private static String mobiles = "";//电话号码
        private static String content = "测试短信发送";//短信内容
        public SMSUtils()
        

        
        public void  SendMessage()
                         
            SendReq sendReq = new SendReq();             
            sendReq.apId = apId;
            sendReq.ecName = ecName;
            sendReq.secretKey = secretKey;
            sendReq.content = content;
            sendReq.mobiles = mobiles;
            sendReq.addSerial = addSerial;
            sendReq.sign = sign;
            sendReq.mac = UserMd5(sendReq.ecName + sendReq.apId + sendReq.secretKey + sendReq.mobiles + sendReq.content + sendReq.sign);
            var reqText = JsonConvert.SerializeObject(sendReq);
            string encode = Convert.ToBase64String(Encoding.UTF8.GetBytes(reqText));
            sendPost(url, encode);

        
        #region MyRegion
        private static void sendPost(string url, string param)
        

            //创建HttpClient(注意传入HttpClientHandler)
            var handler = new HttpClientHandler()  AutomaticDecompression = DecompressionMethods.GZip ;
            using (var http = new HttpClient(handler))
            
                var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(param), Encoding.UTF8, "application/json");
                var response = http.PostAsync(url, content).Result;//传参使用                                                                  
                response.EnsureSuccessStatusCode(); //确保HTTP成功状态值R
                //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
                var result = response.Content.ReadAsStringAsync().Result;
                var json = JsonConvert.DeserializeObject<SendRes>(result);
                bool success = json.success;
            
        

        #endregion
        //MD5加密
        public string UserMd5(string str)
        
            string cl = str;
            string pwd = "";
            MD5 md5 = MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
                pwd = pwd + s[i].ToString("x2");
            
            return pwd;
        

    



    /**
     * 发送短信请求实体
     */
    public class SendReq
    
        public string ecName  get; set;      //集团客户名称
        public string apId  get; set;         //用户名
        public string secretKey  get; set;            //密码
        public string mobiles  get; set;      //手机号码逗号分隔。(如“18137282928,18137282922,18137282923”)
        public string content  get; set;      //发送短信内容
        public string sign  get; set;         //网关签名编码,必填,签名编码在中国移动集团开通帐号后分配,可以在云MAS网页端管理子系统-SMS接口管理功能中下载。
        public string addSerial  get; set;            //扩展码,根据向移动公司申请的通道填写,如果申请的精确匹配通道,则填写空字符串(""),否则添加移动公司允许的扩展码。
        public string mac  get; set;          //API输入参数签名结果,签名算法:将ecName,apId,secretKey,mobiles,content ,sign,addSerial按照顺序拼接,然后通过md5(32位小写)计算后得出的值。
    

    /**
     * 发送短信响应实体
     */
    public class SendRes
    
        public string rspcod  get; set;  //响应状态码
        public string msgGroup  get; set;     //消息批次号,由云MAS平台生成,用于验证短信提交报告和状态报告的一致性(取值msgGroup)注:如果数据验证不通过msgGroup为空
        public bool success  get; set;     //数据校验结果
    

 

以上是关于移动MAS短信平台发送短信的主要内容,如果未能解决你的问题,请参考以下文章

1背景介绍及移动云MAS平台 --短信平台

C# 调用移动MAS接口发送普通短信WebClient方式

Springboot 整合 中国移动MAS HTTP1.0 实现短信发送服务

Java对接云MAS发送短信验证码(HTTPS方式)

python 调用接口发短信

如何在不使用移动网络的情况下向自己发送假短信?