NET(C#) 移动云推送模版消息到指定手机号

     NET(C#) 移动云推送模版消息到指定手机号

     //1.从移动拿到短信接口需要的相关信息 MasCloudPara 实体里面的字段 //2.根据需要选择官方的短信发送接口(正常短信 或者 带模版的短信),本代码是带短信模版的 //3.注意事项: //3.1 MasCloudPara 实体中的 Params 参数 大写,官方文档是小写 C# 中 params 是关键字 //3.2 测试用帐号 只能是移动手机号 手机号多个可以逗号分隔 //3.4 如果选择模版,模版中有参数 那么参数类型必须和模版保持一致,否则无法收到短信 //3.5 移动云选择的是 POST +参数 Base64 的形式发送短信的 //3.6 MasCloudPara 中的mac 是 MD5 32位无间隔符的参数加密 带短信的模版的加密规则如下 MD5(ecName + apId + secretKey +templateId + mobiles + Params +sign +addSerial) //3.7 MasCloudPara 中的addSerial 可以不指定 //3.8 用到的命名空间: //using Newtonsoft.Json; //using System; //using System.Collections.Generic; //using System.Net.Http; //using System.Security.Cryptography; //using System.Text; MCPushMessageToPhone("你的手机号");
#region 移动云推送消息到指定手机号 public static void MCPushMessageToPhone(string phone){ var secretKey = "secretKey"; //接口密码不用发过去 List<string> listStr = new List<string>(); listStr.Add("短信内容,多个可以逗号分隔"); var para = new MasCloudPara(){ ecName = "接口联调账号", apId = "apId", mobiles = "mobiles", sign = "sign", Params = JsonConvert.SerializeObject(listStr), addSerial = "", templateId = "templateId" }; try{ para.mac = EncryptionMD5(para.ecName + para.apId + secretKey + para.templateId + para.mobiles + para.Params + para.sign +para.addSerial); var json = JsonConvert.SerializeObject(para); //将里面的MCparams 参数替换为 if (string.IsNullOrEmpty(json)){ return; } var content = Base64Code(json); var url = "http://运营商短信IP:端口号/sms/tmpsubmit"; var stringContent = new StringContent(content, Encoding.UTF8, "application/json"); var httpClient = new HttpClient(); var response = httpClient.PostAsync(url, stringContent).Result; var responseStr = response.Content.ReadAsStringAsync().Result; var masCloudResponse = JsonConvert.DeserializeObject<MasCloudResponse>(responseStr); if (masCloudResponse.success){ Console.WriteLine("发送成功"); }else{ Console.WriteLine("发送失败" + masCloudResponse.rspcod); } }catch (Exception ex){ throw new Exception(ex.Message); } } public class MasCloudPara{ /// <summary> /// 企业名称 /// </summary> public string ecName { get; set; } /// <summary> /// 接口账号用户名 /// </summary> public string apId { get; set; } /// <summary> /// 收信手机号码。英文逗号分隔,每批次限5000个号码 /// </summary> public string mobiles { get; set; } /// <summary> /// 签名编码。在云MAS平台『管理』→『接口管理』→『短信接入用户管理』获取。 /// </summary> public string sign { get; set; } /// <summary> /// 扩展码。依据申请开户的服务代码匹配类型而定,如为精确匹配,此项填写空字符串("");如为模糊匹配,此项可填写空字符串或自定义的扩展码,注:服务代码加扩展码总长度不能超过20位 /// </summary> public string addSerial { get; set; } /// <summary> /// 参数校验序列,生成方法:将ecName、apId、secretKey、mobiles、content、sign、addSerial按序拼接(无间隔符),通过MD5(32位小写)计算得出值。 /// </summary> public string mac { get; set; } public string templateId { get; set; } //文档中是小写,但是用大写也可以通过 public string Params { get; set; } } /// <summary> /// 响应结果 /// </summary> public class MasCloudResponse{ /// <summary> /// 响应状态 /// </summary> public string rspcod { get; set; } /// <summary> /// 消息批次号,由云MAS平台生成,用于关联短信发送请求与状态报告,注:若数据验证不通过,该参数值为空。 /// </summary> public string mgsGroup { get; set; } /// <summary> /// 数据校验结果 /// </summary> public bool success { get; set; } } /// <summary> /// Base64加密 /// </summary> /// <param name="Message"></param> /// <returns></returns> public static string Base64Code(string Message){ byte[] bytes = Encoding.UTF8.GetBytes(Message);//这里要注意不是Default 因为Default默认GB2312 return Convert.ToBase64String(bytes); } /// <summary> /// 字符串MD5加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string EncryptionMD5(string str){ try{ MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bytValue, bytHash; bytValue = System.Text.Encoding.UTF8.GetBytes(str); bytHash = md5.ComputeHash(bytValue); md5.Clear(); string sTemp = ""; for (int i = 0; i < bytHash.Length; i++){ sTemp += bytHash[i].ToString("X").PadLeft(2, '0'); } str = sTemp.ToLower(); }catch (Exception e){ Console.WriteLine(e.Message); } return str; } #endregion

 

posted @ 2022-08-12 16:37  Mark's.T  阅读(293)  评论(0编辑  收藏  举报