小言_互联网的博客

C#实现手机发送验证码

290人阅读  评论(0)
 
目录

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

配置文件的内容如下

验证手机号的正则表达式


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

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

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


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

配置文件的内容如下


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

验证手机号的正则表达式


  
  1. /// <summary>
  2. /// 验证手机号的正则表达式
  3. /// </summary>
  4. /// <param name="phoneid">手机号</param>
  5. /// <returns>bool值</returns>
  6. public static bool VailPhoneCode(string phoneid)
  7. {
  8. string str = @"^1[3-9]\d{9}$";
  9. Regex regex = new Regex(str); //正则表达式类
  10. if (regex.IsMatch(phoneid)) //Regex验证
  11. {
  12. return true;
  13. }
  14. else
  15. {
  16. return false;
  17. }
  18. }

我这里还有其他语言实现手机发送验证码源码,大家可以私信我。私发给你哦。

如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。


转载:https://blog.csdn.net/promsing/article/details/109561046
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场