信息时代,无论是电商还是网络营(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)钱。当然了土豪例外。。。

【API】短信通106端口验证短信的实现的更多相关文章

  1. 企业短信通 C# HTTP接口 发送短信

    /* 功能: 企业短信通 C# HTTP接口 发送短信 修改日期: 2014-09-01 说明: http://api.cnsms.cn/?ac=send&uid=用户账号&pwd=M ...

  2. [工具开发] 一信通 Web 短信发送客户端

    一.简介 为了协助公司运营部对几家短信平台进行测试,我根据各自的接口文档编写了几个简单的短信发送客户端: 下面是一信通 Web 短信发送客户端,使用 HTTP GET 方法. 二.效果图 1. 首页 ...

  3. 基于SMS短信平台给手机发送短信

    JAVA发送手机短信,我知道的有三种方式,恰逢项目需求,自己整理了基于SMS的短信发送,其他两种这里就说说一下 使用webservice接口发送手机短信,这个可以使用sina提供的webservice ...

  4. 从iMessage到微信,QQ离线短信服务,米聊,易信

    把iMessage.米聊.QQ离线短信服务.微信.易信放到一下,毫无疑问大家能够看出他们的共同点,iMessage与米聊我们就不用说了,有雷布斯的存在就有米聊的存在,QQ离线短信服务是提供给QQ会员的 ...

  5. Delphi阿里云短信【支持短信发送、短信批量发送和查询短信发送记录】

    作者QQ:(648437169) 点击下载➨Delphi阿里云短信             阿里云api文档 [Delphi 阿里云短信]是最新的阿里云短信接口,不是阿里大于短信接口,支持SendSm ...

  6. 【免费】iPhone上最好用的短信群发软件: 高速短信4.1

    免费的最新的联系人.群组.多人发送短信软件短信群发4.1已经出炉.欢迎下载! *归属地信息让你时时记着好友的地方,让陌生号码变得不陌生:  *您能够选择最经常使用的联系人然后发送高速短信; *群联系人 ...

  7. 4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台

    3.  下行短信发送WebService 开发一个WebService,供第三方系统调用,用于发送短信.WebService接收数据后,将信息存储入数据库的短信发送数据表中. WebService参数 ...

  8. java实现发短信功能---腾讯云短信

    目录 java实现发短信功能 前言 开发环境 腾讯云 ---短信 代码 效果 结束语 java实现发短信功能 前言 如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信 考察了 ...

  9. G客短信平台开发,资源短信功能使用说明

    短信平台使用资源短信操作顺序  联系微信:290615413 1:登录客户端 2:点击左侧 发送短信中的,资源短信 3:资源短信申请操作 3.1:选择相应的省市 会显示资源数量. 3.2:然后输入申请 ...

随机推荐

  1. IIS负载均衡的NLB解决方案

    在现行的许多网络应用中,有时一台服务器往往不能满足客户端的要求,此时只能通过增加服务器来解决问题.那么,有没有一个办法或者技术来解决此类问题呢?使用Windows 2000或Windows Serve ...

  2. 第一次Sprint总结

    回顾流程      这次我们做(done)的是设计用户登录界面.注册界面.查询功能.链接数据库等,我们成功地把todo变成了done,首先不管我们结果如何,不管我们的付出是否与收获成正比,但我们做到了 ...

  3. 购买SSL证书到部署网站遇到的若干问题

    作为一个菜鸟,对于SSL证书,我了解不多,只知道用了它网站更安全,所以这次使用SSL证书途中遇到了各方面的各种问题,到今天为止终于全部解决. 一.证书格式 前两天在那什么云上面买了个SSL证书,是Wo ...

  4. SqlServer 2008 R2定时备份数据库,并且发送邮件通知

    先配置数据库的邮件设置,这样才可以发送邮件. 2. 3. 4. 5. 6. 7. 8. 9. 10. 总的预览图,如图 执行这一段(先发送备份邮件,然后进行数据备份,将昨天的发送数据插入到另一张表中, ...

  5. HDU 1069---背包---Monkey and Banana

    HDU 1069 Description A group of researchers are designing an experiment to test the IQ of a monkey. ...

  6. 【Asphyre引擎】学习笔记(二)

    转一篇火人论坛那边的一份学习文档,我简单排一下版,希望对入门者有帮助. 感谢China Yang,这份文档也帮助我快速入了门. 和我一起学 Asphyre Sphinx Framework v1.0. ...

  7. 六个创建模式之单例模式(Singleton Pattern)

    定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.三个特点:一个类只有一个实例:必需自己创建这个实例:必需自行向整个系统提供这个实例. 结构图: Singleton:单例类,提 ...

  8. JavaScript 中有关数组对象的方法

    JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...

  9. ES6中generator传参与返回值

    先看两个例子, 1, function* f() { for(var i=0; true; i++) { var reset = yield i; if(reset) { i = -1; } } } ...

  10. canvas圆形进度条

    通过定义一个canvas标签, new方法传进ID值,和旋转角度值,即可生成圆形进度条 <!DOCTYPE html> <html lang="en"> & ...