C#实现手机发送验证码

简介: C#实现手机发送验证码

首先先需要注册第三方网站,给大家推荐一个网站互亿无线,注册了之后每个用户可以免费发送50条短信。


下面以C#实现手机发送验证码为例。基本思路是本地生成一个4位数的随机数,然后以本地的用户名+密码+随机数拼接成一个字符串,转换为二进制数据,以网络流的形式发送到“互亿无线”的网站上,接下来的工作网站就帮你完成了。


具体实现——封装一个类里,U层直接调用

public class Phone
{
     public static string PostUrl = ConfigurationManager.AppSettings["WebReference.Service.PostUrl"];//写在了配置文件中
     /// <summary>
     /// 实现发送验证码
     /// </summary>
     /// <param name="phoneno">手机号</param>
     /// <returns>验证码</returns>
     public static  int PhoneNo(string phoneno)
     {
         string account = "******";//登录“互亿无线网站”查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
         string password = "*******"; //登录“互亿无线网站”查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
         string mobile = phoneno;
         //string mobile = Request.QueryString["mobile"];
         Random rad = new Random();
         int mobile_code = rad.Next(1000, 10000);   //生成随机数
         //textBox3.Text = mobile_code.ToString();返回值
         string content = "您的验证码是:" + mobile_code + " 。请不要把验证码泄露给其他人。";
         string postStrTpl = "account={0}&password={1}&mobile={2}&content={3}";  //用户名+密码+注册的手机号+验证码
         UTF8Encoding encoding = new UTF8Encoding();  //万国码
         byte[] postData = encoding.GetBytes(string.Format(postStrTpl, account, password, mobile, content)); //将字符串postStrTpl中的格式项替换为四个个指定的 Object 实例的值的文本等效项。再转为二进制数据
         HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl);//对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。
         myRequest.Method = "POST";
         myRequest.ContentType = "application/x-www-form-urlencoded";
         myRequest.ContentLength = postData.Length;
         Stream newStream = myRequest.GetRequestStream(); //
         // Send the data.
         newStream.Write(postData, 0, postData.Length);
         newStream.Flush();
         newStream.Close();
         HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
         if (myResponse.StatusCode == HttpStatusCode.OK)
         {
             StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
             //code状态返回值;msg查询结果描述
             string res = reader.ReadToEnd();
             int len1 = res.IndexOf("</code>");
             int len2 = res.IndexOf("<code>");
             string code = res.Substring((len2 + 6), (len1 - len2 - 6));
             int len3 = res.IndexOf("</msg>");
             int len4 = res.IndexOf("<msg>");
             string msg = res.Substring((len4 + 5), (len3 - len4 - 5));
             //MessageBox.Show(msg);
             return mobile_code;
         }
         else
         {
             return 0;
             //访问失败
         }
     }
 }

配置文件的内容如下

<appSettings>
  <!--发送验证码的接口-->
  <add key="WebReference.Service.PostUrl" value="http://106.ihuyi.cn/webservice/sms.php?method=Submit"/>
  <add key="WebReference.sms" value="http://106.ihuyi.cn/webservice/sms.php?smsService"/>
</appSettings>

验证手机号的正则表达式

/// <summary>
/// 验证手机号的正则表达式
/// </summary>
/// <param name="phoneid">手机号</param>
/// <returns>bool值</returns>
public static bool VailPhoneCode(string phoneid)
{
       string str = @"^1[3-9]\d{9}$";  
       Regex regex = new Regex(str);//正则表达式类
       if (regex.IsMatch(phoneid))//Regex验证
       {
            return true;
       }
       else
       {
            return false;
       }
}

相关文章
|
4天前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名2
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
482 0
|
4天前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名1
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
119 0
|
前端开发 Java Spring
spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)
为了实现在手机注册和登录时获取手机验证码,我使用了阿里的短信服务,下面就来介绍一下具体如何实现。将介绍代码层面如何使用的,去阿里开通该服务,以及如何获得你的accessKeyId和accessKeySecret等。
904 0
spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)
|
4天前
|
JavaScript 前端开发 网络协议
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名3
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
101 0
|
4天前
|
C# 索引
C# | 【完全开源】手机号码归属地查询,一秒内百万次查询
这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。 该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。
154 0
|
10月前
|
JavaScript API 容器
手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)
手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)
203 1
|
10月前
|
API
vue3中运用组件写成获取验证码,并实现手机可以接收到验证码事例
vue3中运用组件写成获取验证码,并实现手机可以接收到验证码事例
318 0
|
C# 开发工具
C#滑动拼图验证码实现笔记
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,动手开发一个C#滑动拼图验证码,下面是我开发过程的记录。
C#滑动拼图验证码实现笔记
|
前端开发 C# 数据安全/隐私保护
C#验证码
验证码通常是为了区分用户是人还是计算机,也可以防止破解密码、刷票等恶意行为,而客户端上多数会用在关键操作上,比如购买、登录、注册等场景。现在验证码的种类样式也特别多,今天教大家如何用C#做出滑动拼图验证码吧~
C#验证码
|
小程序 前端开发 安全
【C#】 MVC4 开发小程序-实现人脸识别-本地和手机预览使用IP测试
小程序Camera组件拍照上传图片到指定的服务器(本地或者外网的IP服务器),然后C# MVC后台调用百度人脸识别接口,实现人脸识别功能呢
229 0