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