public Task SendSmsAsync(string number, string message) { int appid = _smsSenderOptions.AppId; string appkey = _smsSenderOptions.AppKey; var phoneNumbers = new string[] { number }; int templateId = _smsSenderOptions.TemplateId; string smsSign = _smsSenderOptions.SmsSign; // 签名的参数(codepie) try { // 签名参数未提供或者为空时,会使用默认签名发送短信 var ssender = new SmsSingleSender(appid, appkey); SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0], templateId, new[] { "5678", "tes-.-" }, smsSign, "", ""); } catch (JSONException e) { Console.WriteLine(e); } catch (HTTPException e) { Console.WriteLine(e); } catch (Exception e) { Console.WriteLine(e); } return(Task.CompletedTask); }
static void Main(string[] args) { SmsSingleSender singleSender = new SmsSingleSender(appid, appkey); SmsSingleSenderResult resutl = singleSender.send(0, "86", "18328636270", "这是测试信息", "", ""); Console.WriteLine(resutl.result + "---" + resutl.errMsg); Console.ReadKey(); }
private static TencentSmsSendResponseData Convert(SmsSingleSenderResult response) { return(new TencentSmsSendResponseData { Result = response.result, ErrMsg = response.errMsg, Ext = response.ext, Fee = response.fee, Sid = response.sid }); }
/// <summary> /// /// </summary> /// <param name="phoneNumber"></param> /// <param name="msg"></param> /// <returns></returns> public ResultView Send(SingleSendData data) { SmsSingleSenderResult result = Send(0, "86", data.PhoneNumber, data.Message, "", ""); if (result.result == 0) { return(ResultView.Success()); } throw ApiException.BadRequest(result.errMsg); }
/// <summary> /// 发送短信验证码 /// </summary> /// <param name="mobilePhone">手机号</param> /// <param name="smsMessage">短信内容</param> /// <param name="appID">appID</param> /// <param name="appKey">appKey</param> /// <param name="signature">短信签名</param> /// <param name="templateID">短信模板id</param> /// <returns>是否成功发送</returns> private bool SendMsg2User(string mobilePhone, List <string> smsMessage, int appID, string appKey, string signature, int templateID) { try { SmsSingleSender smsSender = new SmsSingleSender(appID, appKey); SmsSingleSenderResult smsResult = smsSender.SendWithParam("86", mobilePhone, templateID, smsMessage, signature, "", ""); if (smsResult.result != 0) { NLog.LogManager.GetCurrentClassLogger().Error("SmsMultiSender has error: " + smsResult); return(false); } return(true); } catch (Exception ex) { NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message); return(false); } }
/// <summary> /// 短信单发 /// </summary> /// <param name="phoneNumber">手机号</param> /// <param name="templateId">短信模板ID,腾讯云后台查询</param> /// <param name="msgParams">短信模板变量一次对应的值</param> /// <returns></returns> private static SmsSingleSenderResult SingleSend(string phoneNumber, int templateId, string[] msgParams) { SmsSingleSenderResult result; try { SmsSingleSender ssender = new SmsSingleSender(appid, appkey); result = ssender.sendWithParam("86", phoneNumber, templateId, msgParams, "", "", ""); } catch (Exception ex) { result = new SmsSingleSenderResult() { result = -1, errMsg = ex.Message }; } return(result); }
public JsonResult SendSmsCode(int sendType, string mobiles, int tempId, string parameters) { try { var appId = CommonVariable.SmsAppId; var appKey = CommonVariable.SmsAppKey; List <string> templParams = parameters.Split(',').ToList(); List <string> phoneNumbers = mobiles.Split(',').ToList(); if (sendType == 1) { MemoryCacheManager cache = new MemoryCacheManager(); LoginUser loginUser = cache.Get <LoginUser>(phoneNumbers[0]); if (loginUser == null) { loginUser = new LoginUser(phoneNumbers[0], 0); } if (loginUser.smsSendTimes >= 5) { return(Json(new { result = 1 })); } SmsSingleSender singleSender = new SmsSingleSender(appId, appKey); SmsSingleSenderResult singleResult = singleSender.SendWithParam("86", phoneNumbers[0], tempId, templParams, "", "", ""); loginUser.smsSendTimes += 1; //记录该用户今日发短信验证码的次数 cache.Set(phoneNumbers[0], loginUser, 60 * 24); return(Json(singleResult)); } else if (sendType == 2) { SmsMultiSender multiSender = new SmsMultiSender(appId, appKey); SmsMultiSenderResult multiResult = multiSender.SendWithParam("86", phoneNumbers, tempId, templParams, "", "", ""); return(Json(multiResult)); } } catch (Exception e) { Console.WriteLine(e); } return(Json(new { result = -1 })); }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="nationCode"></param> /// <param name="phoneNumber"></param> /// <param name="msg"></param> /// <param name="extend"></param> /// <param name="ext"></param> /// <returns></returns> public SmsSingleSenderResult Send(int type, string nationCode, string phoneNumber, string msg, string extend, string ext) { long random = SmsSenderUtil.getRandom(); long now = SmsSenderUtil.getCurrentTime(); if (!string.IsNullOrWhiteSpace(SmsSign)) { msg = SmsSign + msg; } JSONObjectBuilder body = new JSONObjectBuilder() .Put("tel", (new JSONObjectBuilder()).Put("nationcode", nationCode).Put("mobile", phoneNumber).Build()) .Put("type", type) .Put("msg", msg) .Put("sig", SmsSenderUtil.calculateSignature(this.appkey, random, now, phoneNumber)) .Put("time", now) .Put("extend", !String.IsNullOrEmpty(extend) ? extend : "") .Put("ext", !String.IsNullOrEmpty(ext) ? ext : ""); HTTPRequest req = new HTTPRequest(HTTPMethod.POST, this.url) .addHeader("Conetent-Type", "application/json") .addQueryParameter("sdkappid", this.appid) .addQueryParameter("random", random) .setConnectionTimeout(60 * 1000) .setRequestTimeout(60 * 1000) .setBody(body.Build().ToString()); // May throw HttpRequestException HTTPResponse res = httpclient.fetch(req); // May throw HTTPException handleError(res); SmsSingleSenderResult result = new SmsSingleSenderResult(); // May throw JSONException result.parseFromHTTPResponse(res); return(result); }
public int Send(string phone, string Content, SMSType type) { #if !FB return(0); #endif SmsSingleSenderResult result = null; try { resultMsg = ""; SmsSingleSender ssender = new SmsSingleSender(appid, appkey); result = ssender.sendWithParam("86", phone, 289735, new[] { Content }, "单身狗APP", "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信 Console.WriteLine(result); resultMsg = Newtonsoft.Json.JsonConvert.SerializeObject(result); } catch (JSONException e) { resultMsg = e.Message; Console.WriteLine(e); return(1); } catch (HTTPException e) { resultMsg = e.Message; Console.WriteLine(e); return(1); } catch (Exception e) { resultMsg = e.Message; Console.WriteLine(e); return(1); } if (result.result != 0) { resultMsg = result.errMsg; return(1); } return(0); }
// 将单发回包解析成结果对象 public SmsSingleSenderResult ResponseStrToSingleSenderResult(string str) { SmsSingleSenderResult result = JsonConvert.DeserializeObject <SmsSingleSenderResult>(str); return(result); }
/** * 普通单发短信接口,明确指定内容,如果有多个签名,请在内容中以【】的方式添加到信息内容中,否则系统将使用默认签名 * @param type 短信类型,0 为普通短信,1 营销短信 * @param nationCode 国家码,如 86 为中国 * @param phoneNumber 不带国家码的手机号 * @param msg 信息内容,必须与申请的模板格式一致,否则将返回错误 * @param extend 扩展码,可填空 * @param ext 服务端原样返回的参数,可填空 * @return SmsSingleSenderResult */ public SmsSingleSenderResult Send( int type, string nationCode, string phoneNumber, string msg, string extend, string ext) { /* * 请求包体 * { * "tel": { * "nationcode": "86", * "mobile": "13788888888" * }, * "type": 0, * "msg": "你的验证码是1234", * "sig": "fdba654e05bc0d15796713a1a1a2318c", * "time": 1479888540, * "extend": "", * "ext": "" * } * 应答包体 * { * "result": 0, * "errmsg": "OK", * "ext": "", * "sid": "xxxxxxx", * "fee": 1 * } */ if (0 != type && 1 != type) { throw new Exception("type " + type + " error"); } if (null == extend) { extend = ""; } if (null == ext) { ext = ""; } long random = util.GetRandom(); long curTime = util.GetCurTime(); // 按照协议组织 post 请求包体 JObject data = new JObject(); JObject tel = new JObject(); tel.Add("nationcode", nationCode); tel.Add("mobile", phoneNumber); data.Add("tel", tel); data.Add("msg", msg); data.Add("type", type); data.Add("sig", util.StrToHash(String.Format( "appkey={0}&random={1}&time={2}&mobile={3}", appkey, random, curTime, phoneNumber))); data.Add("time", curTime); data.Add("extend", extend); data.Add("ext", ext); string wholeUrl = url + "?sdkappid=" + sdkappid + "&random=" + random; HttpWebRequest request = util.GetPostHttpConn(wholeUrl); byte[] requestData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data)); request.ContentLength = requestData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(requestData, 0, requestData.Length); requestStream.Close(); // 接收返回包 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); string responseStr = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); SmsSingleSenderResult result; if (HttpStatusCode.OK == response.StatusCode) { result = util.ResponseStrToSingleSenderResult(responseStr); } else { result = new SmsSingleSenderResult(); result.result = -1; result.errmsg = "http error " + response.StatusCode + " " + responseStr; } return(result); }
/** * 指定模板单发 * @param nationCode 国家码,如 86 为中国 * @param phoneNumber 不带国家码的手机号 * @param templId 模板 id * @param templParams 模板参数列表,如模板 {1}...{2}...{3},那么需要带三个参数 * @param extend 扩展码,可填空 * @param ext 服务端原样返回的参数,可填空 * @return SmsSingleSenderResult */ public SmsSingleSenderResult SendWithParam( string nationCode, string phoneNumber, int templId, List <string> templParams, string sign, string extend, string ext) { /* * 请求包体 * { * "tel": { * "nationcode": "86", * "mobile": "13788888888" * }, * "sign": "腾讯云", * "tpl_id": 19, * "params": [ * "验证码", * "1234", * "4" * ], * "sig": "fdba654e05bc0d15796713a1a1a2318c", * "time": 1479888540, * "extend": "", * "ext": "" * } * 应答包体 * { * "result": 0, * "errmsg": "OK", * "ext": "", * "sid": "xxxxxxx", * "fee": 1 * } */ if (null == sign) { sign = ""; } if (null == extend) { extend = ""; } if (null == ext) { ext = ""; } long random = util.GetRandom(); long curTime = util.GetCurTime(); // 按照协议组织 post 请求包体 JObject data = new JObject(); JObject tel = new JObject(); tel.Add("nationcode", nationCode); tel.Add("mobile", phoneNumber); data.Add("tel", tel); data.Add("sig", util.CalculateSigForTempl(appkey, random, curTime, phoneNumber)); data.Add("tpl_id", templId); data.Add("params", util.SmsParamsToJSONArray(templParams)); data.Add("sign", sign); data.Add("time", curTime); data.Add("extend", extend); data.Add("ext", ext); string wholeUrl = url + "?sdkappid=" + sdkappid + "&random=" + random; HttpWebRequest request = util.GetPostHttpConn(wholeUrl); byte[] requestData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data)); request.ContentLength = requestData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(requestData, 0, requestData.Length); requestStream.Close(); // 接收返回包 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); string responseStr = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); SmsSingleSenderResult result; if (HttpStatusCode.OK == response.StatusCode) { result = util.ResponseStrToSingleSenderResult(responseStr); } else { result = new SmsSingleSenderResult(); result.result = -1; result.errmsg = "http error " + response.StatusCode + " " + responseStr; } return(result); }