短信通106端口验证短信的实现

信息时代,无论是电商还是网络营(chuan)销(xiao)都希望得道更多的用户信息。所以很多的网站注册上用到了手机验证码功能。网上有很多的SMS接口提供商。在选择的时候无非就是考虑到1、发送速度;2、短信价格;3、运营商服务以及技术支持。

    找了几个感觉这个提供商还不错(http://www.pcf.cn/)。首先是发送的速度,因现在是过年时期短信也应该输入高峰期吧,这种情况下短信几乎是五秒内送达。其次是价格,从5分到1角不等,因会员等级不同价格不同。不过对于一般小网站的土(diao)豪(si)站长也是可以接受的。

    写了一个HTTP POST的发送信息类,当然了官网也提供了相应的下载。手贱就愿意自己写,直接贴。说不定那天我也成为未来某某门户网站的BOSS那。。。 

   

 using System;



    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Text;

    using System.Net;

    using System.IO;

 

    namespace SMS

    {

        public class CSMS

        {

            private string strUrl = "http://sms.106jiekou.com/utf8/sms.aspx";

            private string strAccount = "";    // 用户登录名称 This is Login Name

            private string strPassWord = "";        // 短信接口密码(非登录密码) This is Interface PassWord(Not Longin PassWord)

 

            /// <summary>

            /// 构造函数

            /// </summary>

            /// <param name="strAccount">登录用户帐号</param>

            /// <param name="strPassWord">短信接口密码</param>

            public CSMS(string strAccount, string strPassWord)

            {

                this.strAccount = strAccount;

                this.strPassWord = strPassWord;

            }

 

            /// <summary>

            /// 发送信息

            /// </summary>

            /// <param name="strTelNum">目标电话号码</param>

            /// <param name="strContent">短信内容,必须为短信模版中审核通过</param>

            /// <returns></returns>

            public bool SendSMS(string strTelNum, string strContent, out string strError)

            {

                bool bResult = false;

                strError = "";

                string strPostData = "account={0}&password={1}&mobile={2}&content={3}";

                UTF8Encoding utfEncoding = new UTF8Encoding();

                byte[] bPostData = utfEncoding.GetBytes(string.Format(strPostData, this.strAccount, this.strPassWord, strTelNum, strContent));

 

               try

                {

                    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(this.strUrl);

                    myRequest.Method = "POST";

                    myRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";

                    myRequest.ContentLength = bPostData.Length;

 

                    Stream stream = myRequest.GetRequestStream();

                    // 发送数据 Send the data.

                    stream.Write(bPostData, 0, bPostData.Length);

                    stream.Flush();

                    stream.Close();

 

                    HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

                    if (myResponse.StatusCode == HttpStatusCode.OK)

                    {

                        int iResult = -1;

                        StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);

                        string strResult = reader.ReadToEnd();

                        int.TryParse(strResult, out iResult);

                        switch (iResult)

                        {

                            case -1:

                                strError = "Error:服务器返回值转换错误、" + strResult;

                                bResult = false;

                                break;

                            case 100:

                                strError = "";

                                bResult = true;

                                break;

                            default:

                                bResult = false;

                                strError = "Error:服务器拒绝发送、请查看官方API返回值信息;错误代码(" + iResult + ")";

                                break;

                        }

                    }

                }

                catch (Exception ex)

                {

                    bResult = false;

                    strError = "Error:" + ex.Message;

                }

 

                return bResult;

            }

        }

    }

  

 
 返回发送的状态码说明:

状态码     说明

100         发送成功

101         验证失败

102         手机号码格式不正确

103         会员级别不够

104         内容未审核

105         内容过多

106         账户余额不足

107         Ip受限

108         手机号码发送太频繁,请换号或隔天再发

109         帐号被锁定

110         手机号发送频率持续过高,黑名单屏蔽数日

  120         系统升级
  
 注:由于某些网民的特殊爱好可能回去你网站捣乱,所以短信验证的时候要加上验证、IP地址限制、ID限制、手机号限制以及短信通帐号密码安全保护。毕竟这花的是站长的血(guang)汗(gao)钱。当然了土豪例外。。。

你可能感兴趣的:(验证)