C#批量发送手机短信——云通讯平台

Posted 拂晓%落幕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#批量发送手机短信——云通讯平台相关的知识,希望对你有一定的参考价值。

云通讯平台:http://www.yuntongxun.com

1、在云通讯平台建短信模板

 

  

2、通过上述账号信息编辑如下:

//phoneNumber 发送到的手机号   content 短信内容   
public ResponseMessage SmsSend(string phoneNumber, string content) { CCPRestSDK api = new CCPRestSDK(); //ip格式如下,不带https:// bool isInit = api.init("app.cloopen.com", "8883"); api.setAccount("主账号ACCOUNT SID", "主账号AUTH TOKEN"); api.setAppId("应用AppId"); string ret; ResponseMessage result = new ResponseMessage() { Status = false, Msg = "发送失败" }; try { if (isInit) { string[] data = { content }; Dictionary<string, object> retData = api.SendTemplateSMS(phoneNumber, "短信模板号", data); ret = getDictionaryData(retData); if (retData["statusCode"].ToString() == "000000") { result = new ResponseMessage() { Status = true, Msg = "发送成功" }; } else { result = new ResponseMessage() { Status = false, Msg = "发送失败" }; } } else { result = new ResponseMessage() { Status = false, Msg = "发送失败" }; } } catch (Exception exc) { ret = exc.Message; result = new ResponseMessage() { Status = false, Msg = exc.Message }; } return result; }

 

  public class ResponseMessage
    {
        /// <summary>
        /// 操作类型(teaCRMEnums.ActionEnum的字符串形式)
        /// </summary>
        public string Action { get; set; }

        /// <summary>
        /// 返回状态
        /// </summary>
        public bool Status { get; set; }

        /// <summary>
        /// 返回结果
        /// </summary>
        public string Result { get; set; }

        /// <summary>
        /// 自定义提示信息
        /// </summary>
        public string Msg { get; set; }
     
    }
  /// <summary>
        /// 模板短信
        /// </summary>
        /// <param name="to">短信接收端手机号码集合,用英文逗号分开,每批发送的手机号数量不得超过100个</param>
        /// <param name="templateId">模板Id</param>
        /// <param name="data">可选字段 内容数据,用于替换模板中{序号}</param>
        /// <exception cref="ArgumentNullException">参数不能为空</exception>
        /// <exception cref="Exception"></exception>
        /// <returns></returns>
        public Dictionary<string, object> SendTemplateSMS(string to, string templateId, string[] data)
        {
            Dictionary<string, object> initError = paramCheckRest();
            if (initError != null)
            {
                return initError;
            }
            initError = paramCheckMainAccount();
            if (initError != null)
            {
                return initError;
            }
            initError = paramCheckAppId();
            if (initError != null)
            {
                return initError;
            }

            if (to == null)
            {
                throw new ArgumentNullException("to");
            }

            if (templateId == null)
            {
                throw new ArgumentNullException("templateId");
            }

            try
            {
                string date = DateTime.Now.ToString("yyyyMMddhhmmss");

                // 构建URL内容
                string sigstr = MD5Encrypt(m_mainAccount + m_mainToken + date);
                string uriStr = string.Format("https://{0}:{1}/{2}/Accounts/{3}/SMS/TemplateSMS?sig={4}", m_restAddress, m_restPort, softVer, m_mainAccount, sigstr);
                Uri address = new Uri(uriStr);

                WriteLog("SendTemplateSMS url = " + uriStr);

                // 创建网络请求  
                HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
                setCertificateValidationCallBack();

                // 构建Head
                request.Method = "POST";

                Encoding myEncoding = Encoding.GetEncoding("utf-8");
                byte[] myByte = myEncoding.GetBytes(m_mainAccount + ":" + date);
                string authStr = Convert.ToBase64String(myByte);
                request.Headers.Add("Authorization", authStr);


                // 构建Body
                StringBuilder bodyData = new StringBuilder();

                if (m_bodyType == EBodyType.EType_XML)
                {
                    request.Accept = "application/xml";
                    request.ContentType = "application/xml;charset=utf-8";

                    bodyData.Append("<?xml version=\'1.0\' encoding=\'utf-8\'?><TemplateSMS>");
                    bodyData.Append("<to>").Append(to).Append("</to>");
                    bodyData.Append("<appId>").Append(m_appId).Append("</appId>");
                    bodyData.Append("<templateId>").Append(templateId).Append("</templateId>");
                    if (data != null && data.Length > 0)
                    {
                        bodyData.Append("<datas>");
                        foreach (string item in data)
                        {
                            bodyData.Append("<data>").Append(item).Append("</data>");
                        }
                        bodyData.Append("</datas>");
                    }
                    bodyData.Append("</TemplateSMS>");
                }
                else
                {
                    request.Accept = "application/json";
                    request.ContentType = "application/json;charset=utf-8";

                    bodyData.Append("{");
                    bodyData.Append("\\"to\\":\\"").Append(to).Append("\\"");
                    bodyData.Append(",\\"appId\\":\\"").Append(m_appId).Append("\\"");
                    bodyData.Append(",\\"templateId\\":\\"").Append(templateId).Append("\\"");
                    if (data != null && data.Length > 0)
                    {
                        bodyData.Append(",\\"datas\\":[");
                        int index = 0;
                        foreach (string item in data)
                        {
                            if (index == 0)
                            {
                                bodyData.Append("\\"" + item + "\\"");
                            }
                            else
                            {
                                bodyData.Append(",\\"" + item + "\\"");
                            }
                            index++;
                        }
                        bodyData.Append("]");
                    }
                    bodyData.Append("}");

                }

                byte[] byteData = UTF8Encoding.UTF8.GetBytes(bodyData.ToString());

                WriteLog("SendTemplateSMS requestBody = " + bodyData.ToString());

                // 开始请求
                using (Stream postStream = request.GetRequestStream())
                {
                    postStream.Write(byteData, 0, byteData.Length);
                }

                // 获取请求
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream  
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string responseStr = reader.ReadToEnd();

                    WriteLog("SendTemplateSMS responseBody = " + responseStr);

                    if (responseStr != null && responseStr.Length > 0)
                    {
                        Dictionary<string, object> responseResult = new Dictionary<string, object> { { "statusCode", "0" }, { "statusMsg", "成功" }, { "data", null } };

                        if (m_bodyType == EBodyType.EType_XML)
                        {
                            XmlDocument resultXml = new XmlDocument();
                            resultXml.LoadXml(responseStr);
                            XmlNodeList nodeList = resultXml.SelectSingleNode("Response").ChildNodes;
                            foreach (XmlNode item in nodeList)
                            {
                                if (item.Name == "statusCode")
                                {
                                    responseResult["statusCode"] = item.InnerText;
                                }
                                else if (item.Name == "statusMsg")
                                {
                                    responseResult["statusMsg"] = item.InnerText;
                                }
                                else if (item.Name == "TemplateSMS")
                                {
                                    Dictionary<string, object> retData = new Dictionary<string, object>();
                                    foreach (XmlNode subItem in item.ChildNodes)
                                    {
                                        retData.Add(subItem.Name, subItem.InnerText);
                                    }
                                    responseResult["data"] = new Dictionary<string, object> { { item.Name, retData } };
                                }
                            }
                        }
                        else
                        {
                            responseResult.Clear();
                            responseResult["resposeBody"] = responseStr;
                        }

                        return responseResult;
                    }
                    return new Dictionary<string, object> { { "statusCode", 172002 }, { "statusMsg", "无返回" }, { "data", null } };
                }
            }
            catch (Exception e)
            {

                throw e;
            }
        }
  private string getDictionaryData(Dictionary<string, object> data)
        {
            string ret = null;
            foreach (KeyValuePair<string, object> item in data)
            {
                if (item.Value != null && item.Value.GetType() == typeof(Dictionary<string, object>))
                {
                    ret += item.Key.ToString() + "={";
                    ret += getDictionaryData((Dictionary<string, object>)item.Value);
                    ret += "};";
                }
                else
                {
                    ret += item.Key.ToString() + "=" + (item.Value == null ? "null" : item.Value.ToString()) + ";";
                }
            }
            return ret;
        }

 

以上是关于C#批量发送手机短信——云通讯平台的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用阿里云发送短信

Python短信验证码平台查询账户余额demo---创蓝253云通讯平台案例

创蓝253云通讯paas平台Python短信接口demo

PYTHON创蓝253云通讯平台国际短信API接口DEMO

网易云信,发送验证码短信C#版代码

发送短信功能