最近接触到发送短信的功能,有多种方法实现,(第三方类、使用短信接口提供商的服务、)网上找到几个比较详细的例子,在此记录下。
1:创建一个项目用来调用第三方的类,右键Nuget添加第三方的引用类库qcloudsms_csharp
2:把第三方的公共类放入到我们的项目里
5:业务层:先引用第三方项目,先调用第三方类,发送验证码,然后将验证码存储到短信信息对象,最后调用数据访问层的插入短信的方法。
6:控制器写一个JsonResult的发送验证码方法需要接收手机号
publicJsonResultGetCode(stringphone){Operateoperate=newOperate();SMSInfoSerivicesMSInfoSerivice=newSMSInfoSerivice();operate.Success=sMSInfoSerivice.GetCode(phone);returnJson(operate);}
7:控制器写一个JsonResult的校验验证码方法需要接收短信信息对象
8:页面点击获取验证码按钮:先禁用按钮,然后ajaxpost提交到控制器对应的发送验证码方法,传入手机号,然后success处理返回的结果。
//点击获取验证$("#GetCode").click(function(){vartel=$("#tel").val();$.ajax({url:"/SMSCode/GetCodephone="+tel,type:"post",success:function(result){if(result.Success){alert("获取成功");//调用短信验证计时器方法IntervalSMS();}else{alert("获取失败");}}})})//短信验证计时器functionIntervalSMS(){$("#GetCode").attr("disable","disabled");$("#GetCode").css("color","red");vartime=30;$("#GetCode").val(time+"S后重新获取验证码");vartimer=setInterval(function(){if(time>0){time--;$("#GetCode").val(time+"S后重新获取验证码");}else{$("#GetCode").removeAttr("disable").css("color","black");$("#GetCode").val("重新获取验证码");clearInterval(timer);}},1000)}
9:点击注册按钮,写一个校验验证码的方法,校验通过之后才能注册。
2、C#怎么实现手机短信发送功能
为了实现C#语言中的手机短信发送功能,我们需要使用短信接口提供商的服务。以下是一些实现方法的步骤:
步骤一:选择一个短信接口提供商首先,我们需要选择并注册一个短信接口提供商。常见的短信接口提供商有阿里云、腾讯云、云片等。注册后,我们可以得到一些必要的信息,例如接口地址、账号、密码。
步骤二:调用短信接口接着,我们需要使用HTTP协议来调用短信接口。我们可以使用C#中的WebClient类来发送HTTP请求和接收HTTP响应。具体来说,使用WebClient类的UploadString方法,将短信接口的地址和必要的参数以POST方式发送到服务器,并获得服务器的响应。
下面是一个示例代码,使用阿里云短信接口实现发送短信:
usingSystem.Net;
classAliyunSMS{publicstaticvoidsendSms(stringmobile,stringmessage){WebClientclient=newWebClient();client.Encoding=System.Text.Encoding.UTF8;
stringaccessKeyId="
stringtemplateCode="
stringqueryParams="Action=SendSms"+"&Format=JSON"+"&Version=2017-05-25"+"&AccessKeyId="+accessKeyId+"&SignatureMethod=HMAC-SHA1"+"&SignatureNonce="+Guid.NewGuid().ToString().Replace("-","")+"&SignatureVersion=1.0"+"&Timestamp="+System.Uri.EscapeDataString(DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"))+"&RegionId=cn-hangzhou"+"&PhoneNumbers="+mobile+"&SignName="+System.Uri.EscapeDataString(signName)+"&TemplateCode="+templateCode+"&TemplateParam={"code":"123456"}";
stringsignature=computeSignature(queryParams,accessKeySecret);
stringrequestUrl=host+path+""+queryParams+"&Signature="+signature;stringresponse=client.UploadString(requestUrl,"");
Console.WriteLine(response);}
privatestaticstringcomputeSignature(stringstringToSign,stringaccessKeySecret){stringkey=accessKeySecret+"&";HMACSHA1hmac=newHMACSHA1(Encoding.UTF8.GetBytes(key.ToCharArray()));byte[]dataToSign=Encoding.UTF8.GetBytes(stringToSign.ToCharArray());MemoryStreamstream=newMemoryStream(dataToSign);byte[]signatureBytes=hmac.ComputeHash(stream);returnConvert.ToBase64String(signatureBytes);}}该代码中需要替换的是accessKeyId、accessKeySecret、templateCode和signName参数。替换成针对你的阿里云账号相应的参数。
该示例发送的短信模板包含一个变量"code",可以通过后台生成一个随机数来当做变量内容。发送后,阿里云会返回一个JSON格式的响应,其中包含了发送短信的状态和响应码等信息。
步骤三:解析服务器响应最后,我们需要解析服务器返回的响应,以确定短信是否成功发送。
以下是一个示例代码,用于解析阿里云短信接口返回的JSON响应:
usingNewtonsoft.Json;
classAliyunSMS{publicstaticvoidsendSms(stringmobile,stringmessage){//...
stringresponse=client.UploadString(requestUrl,"");
dynamicjsonResponse=JsonConvert.DeserializeObject(response);stringcode=jsonResponse.Code;stringmessage=jsonResponse.Message;
if(code=="OK"){Console.WriteLine("发送成功");}else{Console.WriteLine("发送失败:"+message);}}}以上是使用阿里云短信接口实现发送短信的示例。不同的短信接口提供商需要根据其接口文档做出相应的调整。