/// <summary> /// 发送短信 /// </summary> /// <param name="mobile">手机号,可批量,用逗号分隔开,上限为1000个</param> /// <param name="content">内容</param> public async Task <SmsResult> SendAsync(string mobile, string content) { var config = await _configProvider.GetConfigAsync(); var seed = GetSeed(); var key = GetKey(seed, config); var sendaction = config.Url + "send.do"; var result = await Web.Client().Post(sendaction) .Data("name", config.Name) .Data("seed", seed) .Data("key", key) .Data("dest", mobile) .Data("content", content) .ResultAsync(); if (result.Contains("success")) { return(new SmsResult(true, result)); } else { return(new SmsResult(false, result)); } }
/// <summary> /// 发送短信 /// </summary> /// <param name="mobile">手机号,可批量,用逗号分隔开,上限为1000个</param> /// <param name="templatecode">短信模板-可在短信控制台中找到</param> /// <param name="templateparam">模板中的变量替换JSON串</param> /// <param name="outid">为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者</param> public async Task <SmsResult> SendAsync(string mobile, string templatecode, string templateparam, string outid) { var config = await _configProvider.GetConfigAsync(); var accessKeyId = config.AccessKeyId; var accessKeySecret = config.AccessKeySecret; IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); SendSmsResponse response = null; try { //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 request.PhoneNumbers = mobile; //必填:短信签名-可在短信控制台中找到 request.SignName = config.SignName; //必填:短信模板-可在短信控制台中找到 request.TemplateCode = templatecode; //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.TemplateParam = templateparam; //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 request.OutId = outid; //请求失败这里会抛ClientException异常 response = acsClient.GetAcsResponse(request); } catch (ServerException e) { Console.WriteLine(e.ErrorCode); } catch (ClientException e) { Console.WriteLine(e.ErrorCode); } response.CheckNull(nameof(response)); if (response.Code == "OK") { return(SmsResult.Ok); } if (response.Code == "isv.MOBILE_NUMBER_ILLEGAL") { return(new SmsResult(false, response.Message, SmsErrorCode.MobileError)); } return(new SmsResult(false, response.Message)); }
/// <summary> /// 获取授权头信息 /// </summary> private async Task <string> GetAuthorization() { var config = await _configProvider.GetConfigAsync(); return($"Basic {System.Convert.ToBase64String(Encoding.UTF8.GetBytes($"api:{config.Key}"))}"); }