예제 #1
0
        /// <summary>
        /// 发送单条短信
        /// </summary>
        /// <param name="content">短信内容</param>
        /// <param name="mobile">目标手机号</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponse send(string content, string mobile, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponse.errorNotInitialized());
            }
            if (content.isNull())
            {
                return(SMSResponse.custom(9900, "传入内容不能为空"));
            }
            if (filter_nonnumber)
            {
                mobile = mobile.getOnlyNumber();
            }
            if (!mobile.isPhoneNumber())
            {
                return(SMSResponse.custom(9901, "手机号传入有误"));
            }
            var send_content = new SMSSendContent(string.Format("【{0}】{1}", sign, content), mobile, service_key, service_secret);
            //var data = string.Format("UserId={0}&Text64={1}", rid, encodeContent(send_content));
            var response = post(textContent(send_content), "");

            //var response = post(Urls.urlSMSEncoded() + "?" + data, "");
            return(getResponse(response));
        }
예제 #2
0
        /// <summary>
        /// 发送同内容的多条短信
        /// </summary>
        /// <param name="content">短信内容</param>
        /// <param name="mobile_list">目标手机号列表</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponseList send(string content, List <string> mobile_list, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponseList.errorNotInitialized());
            }
            if (content.isNull())
            {
                return(SMSResponseList.custom(9900, "传入内容不能为空"));
            }
            var sb_mobile = new StringBuilder();

            foreach (var item in mobile_list)
            {
                var mob = item;
                if (filter_nonnumber)
                {
                    mob = mob.getOnlyNumber();
                }
                if (!mob.isPhoneNumber())
                {
                    continue;
                }
                if (sb_mobile.Length > 0)
                {
                    sb_mobile.Append(",");
                }
                sb_mobile.Append(mob.Trim());
            }
            if (sb_mobile.Length <= 0)
            {
                return(SMSResponseList.custom(9901, "手机号传入有误"));
            }
            var send_content = new SMSSendContent(string.Format("【{0}】{1}", sign, content), mobile_list, service_key, service_secret);
            //var data = string.Format("UserId={0}&Text64={1}", rid, encodeContent(send_content));
            var response = post(textContent(send_content), "");
            //var response = post(Urls.urlSMSEncoded() + "?" + data, "");
            var res      = getResponse(response);
            var res_list = new SMSResponseList();

            res_list.code        = res.code;
            res_list.msg         = res.msg;
            res_list.total_count = res.count;
            res_list.responses.Add(res);
            return(res_list);
        }
예제 #3
0
        private string encodeContent(SMSSendContent content)
        {
            var key_original = Encoding.UTF8.GetBytes(service_secret);
            var key          = new byte[8];

            for (int i = 0; i < 8; i++)
            {
                if (key_original.Length > i)
                {
                    key[i] = key_original[i];
                }
            }
            byte[] inputByteArray         = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(content));
            DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();

            dCSP.Mode    = CipherMode.CBC;
            dCSP.Padding = PaddingMode.PKCS7;
            MemoryStream mStream = new MemoryStream();
            CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(key, key), CryptoStreamMode.Write);

            cStream.Write(inputByteArray, 0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            return(HttpUtility.UrlEncode(Convert.ToBase64String(mStream.ToArray())));
        }
예제 #4
0
        private string textContent(SMSSendContent content)
        {
            var res = string.Format("{0}?action=send&userid={1}&account={2}&password={3}&mobile={4}&content={5}&sendTime=&extno=", Urls.urlSMSJson(), "test", service_key, password_md5, content.Moblie, HttpUtility.UrlEncode(content.Text));

            return(res);
        }