免费短信接口
- 格式:ppt
- 大小:49.00 KB
- 文档页数:8
Web Service接入模式Web Service 发送短信模式Web Service 路径:/WS/LinkWS.asmx系统提供8个接口: 注册接口Reg、更改密码接口UpdPwd、修改注册信息UpdReg、查询余额接口SelSum、发送信息接口Send、群发短信接口 BatchSend 、短信报告接口 GetReportSMS、接收短信Get注册接口Reg输入参数:参数说明类型LoginName代理商账号StringLoginPwd 代理商密码StringCorpName 企业名称StringLinkMan 联系人StringTel 联系电话StringMobile 联系人手机StringEmail 邮件StringMemo 其他备注StringCorpID 用户账号StringPass 用户密码String输出参数:输出返回值参数状态说明OK 注册成功错误文本失败C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();String ReS=LinkWs.Reg(LoginName, LoginPwd, CorpName, LinkMan, Tel, Mobile, Email, CorpID, Pass);if(ReS=="OK"){MessageBox.Show("注册成功" );}else{MessageBox.Show("注册失败!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}更改密码UpPwd输入参数参数说明类型CorpID 帐号StringPwd 密码StringNewPwd 新密码String输出参数:输出返回值参数状态说明0 密码修改成功–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new Dxt.LinkWS();intUpdPwd=LinkWs.Reg(CorpID.Text.Trim(),Pwd.Text.Trim(),NewPwd.Text.Trim());if(ReS==0){MessageBox.Show("密码修改成功" );}else if(ReS==-1){MessageBox.Show("账号未注册" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("密码错误!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );修改注册信息 UpdReg输入参数:参数说明类型CorpID 账号String Pwd 密码String CorpName 企业名称String LinkMan 联系人String Tel 联系电话String Mobile 联系人手机String Email 邮件String Memo 其他备注String输出参数:输出返回值参数状态说明0 修改成功–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();ReS=LinkWs.UpdReg(CorpID.Text.Trim(),Pwd.Text.Trim(),CorpName.Text.Trim(),LinkMan.Text.Tr im(),Tel.Text.Trim(),Mobile.Text.Trim(),Email.Text.Trim(),Memo.Text.Trim());if(ReS==0){MessageBox.Show("成功修改注册信息" );}else if(ReS==-1){MessageBox.Show("帐号未注册!" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );查询余额SelSum输入参数参数说明类型CorpID 帐号StringPwd 密码String输出参数:输出返回值参数状态说明0 剩余条数–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();int ReS=LinkWs.SelSum(CorpID.Text.Trim(),Pwd.Text.Trim());if(ReS>=0)MessageBox.Show("还剩"+ReS.ToString()+"条" );}else if(ReS==-1){MessageBox.Show("帐号未注册!" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}发送短信 Send(返回状态报告ID)输入参数:参数说明类型CorpID 账号StringPwd 密码StringMobile 发送手机号码StringContent 发送内容(需要UrlEncode)StringCell 子号StringSendTime 定时发送时间String 2012/2/6 17:02:00 输出参数:输出返回值参数状态说明大于0的数字发送成功(得到大于0的数字、作为取报告的id)–1 账号未注册–2 其他错误–3 密码错误–4 手机号格式不对–5 余额不足–6 定时发送时间不是有效的时间格式–7 禁止10小时以内向同一手机号发送相同短信-10 需要审核的信息C# 实例:try{Dxt.LinkWS LinkWs=new Dxt.LinkWS();intReS=LinkWs.Send2(CorpID.Text.Trim(),Pwd.Text.Trim(),SendMobile.Text.ToString().Trim(),Sen dContent.Text.ToString().Trim(),"",SendTime.Text.ToString().Trim());if (ReS == 0){MessageBox.Show("发送成功!" );}else if(ReS==-1){MessageBox.Show("帐号未注册!") ;}else if(ReS==-2){MessageBox.Show("其他错误!") ;}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!") ;}else if(ReS==-4){MessageBox.Show("手机号码不正确!") ;}else if(ReS==-5){MessageBox.Show("余额不足!") ;}else if(ReS==-6){MessageBox.Show("定时发送时间不是有效时间!") ;}else if(ReS==-7){MessageBox.Show("禁止10小时之内向同一手机发送相同内容") ;}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}群发短信 BatchSend(返回状态报告ID)输入参数:备注:相同内容的号码尽量一个包提交(一次性最多支持600个号码)。
中国移动通信互联网短信网关接口协议(China Mobile Peer to Peer, CMPP)(V2.0)中国移动通信集团公司2002年4月目录前言 (4)1.围 (5)2.缩略语 (5)3.网络结构 (6)4.CMPP功能概述 (6)5. 协议栈 (8)6. 通信方式 (8)6.1 长连接 (9)6.2 短连接 (11)6.3 本协议中涉及的端口号 (12)6.4 交互过程中的应答方式 (12)7.消息定义 (12)7.1基本数据类型 (12)7.2消息结构 (13)7.3 消息头格式(Message Header) (13)7.4信息资源站实体(SP)与互联网短信网关(ISMG)间的消息定义 (13)7.4.1 SP请求连接到ISMG(CMPP_CONNECT)操作 (13)7.4.1.1 CMPP_CONNECT消息定义(SP ISMG) (13)7.4.1.2 CMPP_CONNECT_RESP消息定义(ISMG SP) (14)7.4.2 SP或ISMG请求拆除连接(CMPP_TERMINATE)操作 (14)7.4.2.1 CMPP_TERMINATE消息定义(SP ISMG或ISMG SP) (14)7.4.2.2 CMPP_TERMINATE_RESP消息定义(SP ISMG或ISMG SP) (14)7.4.3 SP向ISMG提交短信(CMPP_SUBMIT)操作 (15)7.4.3.1 CMPP_SUBMIT消息定义(SP ISMG) (15)7.4.3.2 CMPP_SUBMIT_RESP消息定义(ISMG SP) (16)7.4.4 SP向ISMG查询发送短信状态(CMPP_QUERY)操作 (17)7.4.4.1 CMPP_QUERY消息的定义(SP ISMG) (17)7.4.4.2 CMPP_QUERY_RESP消息的定义(ISMG SP) (17)7.4.5 ISMG向SP送交短信(CMPP_DELIVER)操作 (18)7.4.5.1 CMPP_DELIVER消息定义(ISMG SP) (18)7.4.5.2 CMPP_DELIVER_RESP消息定义(SP ISMG) (20)7.4.6 SP向ISMG发起删除短信(CMPP_CANCEL)操作 (20)7.4.6.1 CMPP_CANCEL消息定义(SP ISMG) (20)7.4.6.2 CMPP_CANCEL_RESP消息定义(ISMG SP) (21)7.4.7 链路检测(CMPP_ACTIVE_TEST)操作 (21)7.4.7.1 CMPP_ACTIVE_TEST定义(SP ISMG或ISMG SP) (21)7.4.7.2 CMPP_ACTIVE_TEST_RESP定义(SP ISMG或ISMG SP) (21)7.5互联网短信网关(ISMG)之间的消息定义 (21)7.5.1 源ISMG请求连接到目的ISMG(CMPP_CONNECT)操作 (21)7.5.2 源ISMG请求拆除到目的ISMG的连接(CMPP_TERMINATE)操作 (21)7.5.3链路检测(CMPP_ACTIVE_TEST)操作 (21)7.5.4 源ISMG向目的ISMG转发短信(CMPP_FWD)操作 (22)7.5.4.1 CMPP_FWD定义(ISMG ISMG) (22)7.5.4.2 CMPP_FWD_RESP定义(ISMG ISMG) (25)7.6互联网短信网关(ISMG)与汇接网关(GNS)之间的消息定义 (26)7.6.1 ISMG请求连接到GNS或GNS请求连接到ISMG(CMPP_CONNECT)操作 (26)7.6.2 ISMG请求拆除到GNS的连接或GNS请求拆除到ISMG的连接(CMPP_TERMINATE)操作 (26)7.6.3 ISMG向汇接网关查询MT路由(CMPP_MT_ROUTE)操作 (26)7.6.3.1 CMPP_MT_ROUTE消息定义(ISMG GNS) (26)7.6.3.2 CMPP_MT_ROUTE_RESP消息定义(GNS ISMG) (26)7.6.4 ISMG向汇接网关查询MO路由(CMPP_MO_ROUTE)操作 (27)7.6.4.1 CMPP_MO_ROUTE消息定义(ISMG GNS) (27)7.6.4.2 CMPP_MO_ROUTE_RESP消息定义(GNS ISMG) (27)7.6.5ISMG向汇接网关获取路由(CMPP_GET_ROUTE)操作 (27)7.6.5.1 CMPP_GET_ ROUTE消息定义(ISMG GNS) (27)7.6.5.2 CMPP_GET_ ROUTE_RESP消息定义(GNS ISMG) (28)7.6.6 ISMG向汇接网关更新MT路由(CMPP_MT_ROUTE_UPDATE)操作 (28)7.6.6.1 CMPP_MT_ROUTE_UPDATE消息定义(ISMG GNS) (28)7.6.6.2 CMPP_MT_ROUTE_UPDATE_RESP消息定义(GNS ISMG) (29)7.6.7 ISMG向汇接网关更新MO路由(CMPP_MO_ROUTE_UPDATE)操作 (29)7.6.7.1 CMPP_MO_ROUTE_UPDATE消息定义(ISMG GNS) (29)7.6.7.2CMPP_MO_ROUTE_UPDATE_RESP消息定义(GNS ISMG) (29)7.6.8汇接网关向ISMG更新MT路由(CMPP_PUSH_MT_ROUTE_UPDATE)操作 (30)7.6.8.1 CMPP_PUSH_MT_ROUTE_UPDATE消息定义(GNS ISMG) (30)7.6.8.2 CMPP_PUSH_MT_ROUTE_UPDATE_RESP消息定义(ISMG GNS).. 307.6.9汇接网关向ISMG更新MO路由(CMPP_PUSH_MO_ROUTE_UPDATE)操作 (30)7.6.9.1 CMPP_PUSH_MO_ROUTE_UPDATE消息定义(GNS ISMG) (30)7.6.9.2 CMPP_PUSH_MO_ROUTE_UPDATE_RESP消息定义(ISMG GNS).. 317.7系统定义 (31)7.7.1 Command_Id定义 (31)附录1 MO状态报告的产生 (33)修订历史..................................................... 错误!未定义书签。
一信通企业信息服务平台接口手册目录一信通企业信息服务平台 (1)1.概述 (3)1.1编制目的 (3)1.2容概述 (3)1.3名称解释 (3)1.4参考文献 (3)2.短信 (4)2.1HTTP接口 (4)2.1.1消息协议 (4)2.1.2发送短信 (4)2.1.3回执接口 (5)2.1.4剩余短信条数查询 (6)2.1.5回复容接口 (7)2.2W EBSERVICE接口 (7)2.2.1消息协议 (7)2.2.2发送短信 (8)2.2.3回执接口 (9)2.2.4上行回复容查询接口 (9)2.2.5上行回复容确认接口 (10)2.2.6容审核 (11)修改历史1.概述1.1编制目的该接口文档手册编写在于描述易派企业信息服务平台UMS(以下简称UMS)具体的接口协议,供第三方系统能够顺利接入一信通短信网关。
1.2容概述本规主要讲了第三方系统接入短信通系统的协议要求,协议三大状态和协议指令的格式和响应信息。
1.3名称解释1.4参考文献2.短信2.1http接口2.1.1消息协议接口地址: guangdong.ums86.:8899/sms/Api/通过接口提交参数时, 参数容必须为GB2312 编码, 且经过url编码后的容。
例如:“您好”的url编码为“%C4%FA%BA%C3”接口返回的容是一些键值对的字符串集合,形式为:“k1=v1&k2=v2&k3=v3…”返回容中的键值显示为url编码形式, 经过url解码后的键值是GB2312编码的字符串。
例如:返回容“result=0&description=%B7%A2%CB%CD%B3%C9%B9%A6&faillist=”表示的实际容为“result=0&description=发送成功&faillist=”2.1.2发送短信功能描述:短信发送调用格式:对 guangdong.ums86.:8899/sms/Api/Send.do进行post返回格式: result=&description=错误描述&faillist=失败列表post参数说明:实际返回容为“result=0&description=发送成功”2.1.3回执接口功能描述:短信回执调用方式:ftp返回格式:文本文件ftp服务信息:返回文本文件格式:文件名:arrive_000139_25288_00f_6一行容:SPID=197258 MESSAGEID=910320f1 ID=2432901361 CALLMDN=2501 MDN= RESULT=0 DESC=DELIVRD ARRIVE_TIME=402Java解析这行的方法// 解析一行记录public static Properties parse(String line) {String parsePattern="([^=\t]+)=([^\t]*)";Matcher m = pile(parsePattern).matcher(line);Properties result = new Properties();while (m.find()) {String key = m.group(1).trim();String value = m.group(2).trim();result.put(key.toUpperCase(), value);}return result;}如果要获取取接受短信的则使用:String mdn= (String)result.get("MDN");即可其他字段类似方式2.1.4剩余短信条数查询功能描述:剩余短信条数查询接口调用格式:对guangdong.ums86.:8899/sms/Api/SearchNumber.do进行post返回格式: result=&description=错误描述&faillist=失败列表2.1.5回复容接口功能描述:将上行回复的容通过http协议进行post到企业方调用格式: url由企业方提供,然后对该url进行post,post的格式为xml,格式如下: <packet><reply><mdn></mdn><callmdn>111</callmdn><msg>回复容测试</msg><replytime>2012-01-01 00:00:00</replytime></reply></packet>返回格式:返回格式为xml,格式如下:<returncode>0</returncode>post参数说明:返回值:2.2Webservice接口2.2.1消息协议接口地址:guangdong.ums86.:8899/sms_hb/services/Sms?wsdl2.2.2发送短信功能描述:短信发送调用格式:利用webservice客户端进行http请求返回格式:SmsResponseSmsRequest请求参数说明:SmsResponse返回值:实际返回容为“result=0&description=发送成功”2.2.3回执接口功能描述:短信回执调用方式:利用webservice客户端进行http请求返回格式: ReportResponseReportRequest请求参数说明:ReportResponse返回值:实际返回容为“001,,0; 001,,0;001,,0;”2.2.4上行回复容查询接口功能描述:上行回复容查询调用方式:利用webservice客户端进行http请求返回格式: ReplyResponseReplyResponse返回值:2.2.5上行回复容确认接口功能描述:上行回复容查询调用方式:利用webservice客户端进行http请求返回格式: ReplyConfirmResponse ReplyConfirmRequestReplyConfirmResponse返回值:2.2.6容审核功能描述:短信发送调用格式:利用webservice客户端进行http请求返回格式:AuditingResponseAuditingRequest请求参数说明:AuditingResponse返回值:实际返回容为“result=0&description=短信容审核通过”。
提供Web Service、Http 两种接⼊入模式注册接⼜⼝口Reg输⼊入参数:CorpID-帐号Pwd-密码CorpName-企业名称LinkMan-联系⼈人Tel-联系电话Mobile-联系⼈人⼿手机Email-邮件Memo-其他备注输出参数:整数,0:注册成功;-1、帐号已经注册;-2、其他错误;-3、帐号密码不匹配public int Reg(string CorpID,string Pwd,string CorpName,string LinkMan,string Tel,string Mobile,string Email,string Memo){}h t t p://w w w.512688.c o m/w s/R e g.a s p x? CorpID=*&Pwd=*&CorpName=*&LinkMan=*&Tel=*&Mobile=*&Email=*&Memo=*更改密码UpdPwd输⼊入参数:CorpID-帐号Pwd-密码NewPwd-新密码输出参数:整数,0:密码修改成功;-1、帐号未注册;-2、其他错误;-3、密码错误public int UpdPwd(string CorpID,string Pwd,string NewPwd){}/ws/UpdPwd.aspx?CorpID=*&Pwd=*&NewPwd=*修改注册信息UpdReg输⼊入参数:CorpID-帐号Pwd-密码CorpName-企业名称LinkMan-联系⼈人Tel-联系电话Mobile-联系⼈人⼿手机Email-邮件Memo-其他备注输出参数:整数,0:修改成功;-1、帐号未注册;-2、其他错误;-3、密码错误public int UpdReg(string CorpID,string Pwd,string CorpName,string LinkMan,string Tel,string Mobile,string Email,string Memo){}h t t p://w w w.512688.c o m/w s/U p d R e g.a s p x? CorpID=*&Pwd=*&CorpName=*&LinkMan=*&Tel=*&Mobile=*&Email=*&Memo=*查询余额SelSum输⼊入参数:CorpID-帐号Pwd-密码输出参数:整数,>=0,剩余条数;-1、帐号未注册;-2、其他错误;-3、密码错误public int SelSum(string CorpID,string Pwd){}/ws/SelSum.aspx?CorpID=*&Pwd=*发送短信Send输⼊入参数:CorpID-帐号Pwd-密码Mobile-发送⼿手机号Content-发送内容Cell-⼦子号(可为空)SendTime-定时发送时间(固定14位长度字符串,⽐比如:20060912152435代表2006年9⽉月12⽇日15时24分35秒,可为空)输出参数:整数,0,发送成功;-1、帐号未注册;-2、其他错误;-3、密码错误;-4、⼿手机号格式不对;-5、余额不⾜足;-6、定时发送时间不是有效的时间格式;注意:禁⽌止10⼩小时以内向同⼀一⼿手机号发送相同短信;public int Send(string CorpID,string Pwd,string Mobile,string Content,string Cell,string SendTime){}h t t p://w w w.512688.c o m/w s/S e n d.a s p x? CorpID=*&Pwd=*&Mobile=*&Content=*&Cell=*&SendTime=*群发短信BatchSend输⼊入参数:CorpID-帐号Pwd-密码Mobile-发送⼿手机号(多个号码以逗号分隔,最多⽀支持600个号码)Content-发送内容Cell-⼦子号(可为空)SendTime-定时发送时间(固定14位长度字符串,⽐比如:20060912152435代表2006年9⽉月12⽇日15时24分35秒,可为空)输出参数:整数,0,发送成功进⼊入待发进程;1、直接发送成功;-1、帐号尚未注册;-2、其他错误;-3、帐号或者密码错误;-4、⼀一次提交信息不能超过600个⼿手机号码;-5、企业号帐户余额不⾜足,请先充值再提交短信息!;-6、定时发送时间不是有效的时间格式;-7、发送短信内容包含⿊黑字典关键字;-8、发送内容需在3到250个字之间;-9、发送号码为空注意:禁⽌止10⼩小时以内向同⼀一⼿手机号发送相同短信;PublicInt BatchSend(stringCorpID,stringPwd,stringMobile,stringContent,stringCell,stringSendTime) {}h t t p://w w w.512688.c o m/w s/B a t c h S e n d.a s p x? CorpID=*&Pwd=*&Mobile=*&Content=*&Cell=*&SendTime=*群发短信GetReportFail输⼊入参数:CorpID-帐号,Pwd-密码,cell-⾃自定义输出参数:字符串,如果⽆无返回报告返回'全部正确提交,⽆无错误返回报告';-1、帐号未注册;-2、其他错误;-3、密码错误返回格式:||⼿手机号#返回内容#提交时间#定时时间#⼦子号||⼿手机号#返回内容#提交时间#定时时间#⼦子号……public string GetReportFail(string CorpID,string Pwd, string cell){}/ws /GetReportFail.aspx?CorpID=*&Pwd=*&cell=*接收短信Get输⼊入参数:CorpID-帐号,Pwd-密码输出参数:字串,具体字串;-1、帐号未注册;-2、其他错误;-3、密码错误返回格式:||⼿手机号#上⾏行内容#发送时间#⼦子号||⼿手机号#上⾏行内容#发送时间#⼦子号…… public string Get(string CorpID,string Pwd){}/ws/Get.aspx?CorpID=*&Pwd=*帐号充值ChargeUp输⼊入参数:CorpID-帐号Pwd-密码CardNo-充值卡卡号CardPwd-充值卡密码输出参数:整数,0,充值成功;-1、帐号未注册;-2、其他错误;-3、密码错误;-7、充值失败(可能原因:充值卡号密码不匹配或者卡已经被使⽤用)public int ChargeUp(string CorpID,string Pwd,string CardNo,string CardPwd){}/ws/ChargeUp.aspx?CorpID=*&Pwd=*&CardNo=*&CardPwd=*注销UnReg输⼊入参数:CorpID-帐号Pwd-密码输出参数:整数,0,注销成功;-1、帐号未注册;-2、其他错误;-3、密码错误public int UnReg(string CorpID,string Pwd){}/ws /UnReg.aspx?CorpID=*&Pwd=*。
市面上的短信猫,大多是TC35i、Tc35的模块。
下面的程序主要是针对西门子的TC35系列的GSM模块。
GSM模块的通讯采用AT指令。
上位机(PC、单片机、ARM等)通过串口与GSM模块连接。
上图是TC35i模块,推荐深圳亿纬西门子短信猫设备,这个模块+232电平转换电路+SIM卡座+天线部分等。
基于GSM短信的应用很多,例如远程控制、数据采集等等。
GSM短信猫编程的难点在与“程序与GSM”通讯是异步的。
例如:AT+CSQ 查询信号指令,PC通过RS232串口发送后,GSM短信猫要等一小会才回答,而且还可能不回答。
这样一来就导致编程复杂了。
下面的程序采用了串口中断接收、定时器、线程的方式配合。
实现了接收短信,并把接收到的短信存在数据库中。
然后定期发送短信。
[csharp]view plaincopying System;ing System.Collections.Generic;ing System.Linq;ing System.Text;ing System.Threading;ing System.Windows.Forms;7.space SMS9.{10.public class GSMModem11. {12.13.private string protName;14.private int BaudRate;15.private System.Collections.ArrayList alRecevingSM;// 短信接收缓冲区16.private System.Collections.ArrayList alSendSM; // 短信【待】发送缓冲区17.18.private System.Collections.ArrayList alAuthorizationNumber; //授权号码,系统只会回复授权号码19.20.int WORK_STATE;//短信猫工作状态21.22.//错误的短信数,主要是未经授权的号码发来的短信23.private int ErrorSMCount = 0;24.public int _ErrorSMCount25. {26.get27. {28.return ErrorSMCount;29. }30. }31./// <summary>32./// 0=自检33./// 1=接收34./// 2=发送35./// </summary>36.public int _WORK_STATE37. {38.get39. {40.return WORK_STATE;41. }42. }43.44.45.//接收和发送定时器不能同时工作,切记46.47.//短信接收轮询定时器,定时发送 AT+CGMR={0}48. System.Windows.Forms.Timer revTimer = new System.Windows.Forms.Timer();49.50.//短信发送队列定时器,定时发送 AT+CMGS={0}51. System.Windows.Forms.Timer sendTimer = new System.Windows.Forms.Timer();52.53.//短信猫自检54. System.Windows.Forms.Timer selfCheckingTimer = new System.Windows.Forms.Timer();55.56.57.//短信猫连接设备端口58. System.IO.Ports.SerialPort Port = new System.IO.Ports.SerialPort();59.60.//短信猫串口接收缓冲61./*备注:该缓冲变量由串口DataReceived事件负责接收,具体的处理过程由62. * Timer 定时器内的代码具体执行63. */64.string temp_gsm_str_buf = "";65.66.//67.int CMGD_MAX_ID = 0;//短信卡最大SM容量,通常情况下设置为2568.69.int CMGD_ID = 1; //当前串口发送读取的短信ID号70.71.int GSM_RST_ACT = 0;72.int GSM_MAX_RST_ACT = 8;73.74.int CGMS_Count = 0; //短信发送数量75.76.public int _CGMS_Count77. {78.get79. {80.return CGMS_Count;81. }82. }83.public int _CMGD_MAX_ID84. {85.get86. {87.return CMGD_MAX_ID;88. }89. }90.91.public int _CMGD_ID92. {93.get94. {95.return CMGD_ID;96. }97. }98.99.public int _GSM_RST_ACT100. {101.get102. {103.return GSM_RST_ACT;104. }105. }106.107.public int _GSM_MAX_RST_ACT 108. {109.get110. {111.return GSM_MAX_RST_ACT; 112. }113. }114.115. #region 短信猫工作状态116.117.string INF_GSM_CSQ;118.string INF_GSM_CSCS;119.string INF_GSM_CSCA;120.string INF_GSM_CNMI;121.bool INF_GSM_State;122.123.public string _INF_GSM_CSQ 124. {125.get126. {127.return INF_GSM_CSQ; 128. }129. }130.131.public string _INF_GSM_CSCS 132. {133.get134. {135.return INF_GSM_CSCS; 136. }137. }138.139.public string _INF_GSM_CSCA 140. {141.get142. {143.return INF_GSM_CSCA; 144. }145. }146.147.public string _INF_GSM_CNMI148. {149.get150. {151.return INF_GSM_CNMI;152. }153. }154.155.public bool _INF_GSM_State156. {157.get158. {159.return INF_GSM_State;160. }161. }162. #endregion163.164.165.private int _CmgsSleepTime;166.public GSMModem(string protName,167.string BaudRate,168.int CMGD_MAX_ID,169. System.Collections.ArrayList RecevingSM,170. System.Collections.ArrayList SendSM,171.int revTimerInterval,172.int sendTimerInterval,173.int selfCheckingTimerInterval,174.int CmgsSleepTime,175. System.Collections.ArrayList alAuthorizationNumber176. )177. {178. _CmgsSleepTime = CmgsSleepTime;//AT+CMGS 指令发送后,稍微延迟一定时间,让短信猫做出反应179.180.this.alAuthorizationNumber = alAuthorizationNumber;//保存授权号码181.182.this.CMGD_MAX_ID = CMGD_MAX_ID;183.184.this.protName = protName;185.this.BaudRate = int.Parse(BaudRate);186.this.alRecevingSM = RecevingSM;187.this.alSendSM = SendSM;188.189.190. selfCheckingTimer.Enabled = false;191.192. revTimer.Interval = revTimerInterval;193. revTimer.Enabled = false;194.195. sendTimer.Interval = sendTimerInterval;196. sendTimer.Enabled = false;197.198. revTimer.Tick += revTimer_Tick; //挂接短信轮询定时器199. sendTimer.Tick += sendTimer_Tick;200.201. selfCheckingTimer.Interval = selfCheckingTimerInterval; 202. selfCheckingTimer.Tick += selfCheckingTimer_Tick; 203.204. Port.DataReceived += Port_DataReceived;205. }206.207.public bool Start()208. {209.try210. {211. Port.PortName = protName;212. Port.BaudRate = BaudRate;213. Port.Open();//打开串口214.//短信猫先自检,自检成功了,才能进行接收或发送215. selfCheckingTimer.Enabled = true;216.217. }218.catch (Exception ex)219. {220. MessageBox.Show(ex.Message);221.return false;222. }223.return false;224. }225.226.public bool Stop()227. {228.229. sendTimer.Enabled = false;230. revTimer.Enabled = false;231. selfCheckingTimer.Enabled = false;232. Port.Close();233. CMGD_ID = 1;234. alRecevingSM.Clear();235. alSendSM.Clear();236. ErrorSMCount = 0;237.return true;238. }239.240.void Port_DataReceived(object sender, System.IO.Ports.SerialDataRec eivedEventArgs e)241. {242. System.IO.Ports.SerialPort serialPort = Port;243.244.int len = serialPort.BytesToRead;245.byte[] bs = new byte[len];246. serialPort.Read(bs, 0, len);247.if (len == 0)248. {249.return;250. }251.else252. {253.//接收处理254.string r = Encoding.ASCII.GetString(bs, 0, len);255. temp_gsm_str_buf += r;256.//接收数据处理257.//txtGsmRevLog.Invoke(new EventHandler(DoUpdate), r); //线程处理258. Console.Write(r);259. }260. }261.262.263.private bool AuthorizationPhoneNumber(string phoneID)264. {265.for (int i = 0; i < alAuthorizationNumber.Count; i++)266. {267.string s = alAuthorizationNumber[i].ToString();268.if (phoneID.Equals(s))269.return true;270. }271.272.return false;273.274. }275.bool DoGsmDataReceived()276. {277.//短信猫发回数据处理278.string str = temp_gsm_str_buf;279.if (str.Trim().StartsWith("+CMGR"))280. {281.int P1 = str.IndexOf("0891");282.if (P1 != -1)283. {284. str = str.Substring(P1);285.int P2 = str.IndexOf("\r\n");286.if (P2 != -1)287. {288.string uPDU = str.Substring(0, P2);289.string decMsg = PDUDecoding.DecodingMsg(uPDU); 290.string[] content = decMsg.Split(',');291.string stime = content[1].ToString();292.string sphoneId = content[0].ToString().Replace("+8 6", "");293.string sgsmtxt = content[2].ToString();294.//object[] row = { stime, sphoneId, sgsmtxt }; 295.296.if (AuthorizationPhoneNumber(sphoneId))297. {298. SMDATA sm = new SMDATA();299. sm.sTime = stime;300. sm.sPoneID = sphoneId;301. sm.sContent = sgsmtxt;302. sm.pdu = uPDU;303. sm.sType = "Admin";304. alRecevingSM.Add(sm);305.306.307. }308.else309. {310.//未经授权的用户,10086短信,广告信息,垃圾短信,用户手机号码311.string[] gsmCmd = sgsmtxt.Trim().Split('+'); 312.313.string cmd = gsmCmd[0].ToString();314.if (cmd == "CX")315. {316.if (gsmCmd.Length == 1)317. {318.//仅限用户手机号码319.320. SMDATA sm = new SMDATA();321. sm.sTime = stime;322. sm.sPoneID = sphoneId;323. sm.sContent = "CX"; //让BI查询车辆信息324. sm.pdu = uPDU;325. sm.sType = "User";326. alRecevingSM.Add(sm);327. }328. }329.else330. {331. Console.WriteLine("Error:" + stime + " " + sphoneId + " " + sgsmtxt);332. ErrorSMCount++;333. }334. }335.336.return true;337. }338. }339. }340.else341. {342.343. }344.345.return false;346. }347.348.349.350.bool DoGsmDataSend()351. {352.//短信猫发回数据处理353.string str = temp_gsm_str_buf;354.if (str.Trim().IndexOf("+CMGS") > -1)355. {356. temp_gsm_str_buf = "";357. CGMS_Count++;358.359.return true;360. }361.else362. {363.//接收到错误信息,可能是短信发送失败364. }365. temp_gsm_str_buf = "";366.return false;367. }368.369.//短信发送指令发送定时器370.int SendID;371.int AT_CMGS_LEN;372.373.void sendTimer_Tick(object sender, EventArgs e)374. {375. WORK_STATE = 2;//设置短信猫工作模式为发送376.if (DoGsmDataSend())377. {378. alSendSM.RemoveAt(SendID);379. }380.381.//没有发送的短信了382.if (alSendSM.Count == 0)383. {384. CMGD_ID = 1;385. sendTimer.Enabled = false; //关闭发送386. revTimer.Enabled = true; //打开接收387. }388.else389. {390. SendID = 0;391.392. SMDATA sendSM = (SMDATA)alSendSM[SendID];393.string sPoneID = sendSM.sPoneID;394.string sContent = sendSM.sContent;395.396.string msg = sContent;397.string pdu = PDUDecoding.GetPDUMsg(sPoneID, msg);398. AT_CMGS_LEN = PDUDecoding.getLenght(msg);399. GsmWrite(string.Format("AT+CMGS={0}\r", AT_CMGS_LEN.ToStrin g()));400. Thread.Sleep(_CmgsSleepTime); //500延时,如果短信猫反应慢,设置为1000401. GsmWrite(pdu + "\r");402.403. }404.405. }406.407.//短信轮询指令发送定时器408.void revTimer_Tick(object sender, EventArgs e)409. {410.//定时器每中断1次,接收1条指令411.412. WORK_STATE = 1;//设置短信猫工作模式为接收413.414.if (DoGsmDataReceived())415. {416.int old_CMGD_ID = CMGD_ID - 1;417. GsmWrite("AT+CMGD=" + old_CMGD_ID.ToString() + "\r"); 418. Thread.Sleep(1000);419. }420.421.if (CMGD_ID > CMGD_MAX_ID)422. {423. revTimer.Enabled = false;//停止接收424. sendTimer.Enabled = true;//启动短信发送425. }426.else427. {428.429.//再读取下一条430. temp_gsm_str_buf = "";431.432. GsmWrite("AT+CMGR=" + CMGD_ID.ToString() + "\r"); 433.434. CMGD_ID++;435.436. }437. }438.439.440.441.442.443. #region 短信猫初始信息444.445.446.private void selfCheckingTimer_Tick(object sender, EventArgs e) 447. {448.//先处理串口接收的数据449.//Console.WriteLine(temp_gsm_str_buf);450.451. WORK_STATE = 0; //设置工作状态为自检452.453.string str = "";454.if (temp_gsm_str_buf.Length > 0)455. {456.457.int CSQ = temp_gsm_str_buf.IndexOf("+CSQ");458.459.if (CSQ > -1)460. {461. str = temp_gsm_str_buf.Substring(CSQ);462.string[] content = str.Trim().Split(':');463.if (content.Length > 1)464. {465. INF_GSM_CSQ = content[1].ToString().Replace("OK", "").Replace("\r\n", "").Replace("\"", "");466.467. GSM_RST_ACT++;468. }469. temp_gsm_str_buf = "";470. }471.472.int CSCS = temp_gsm_str_buf.IndexOf("+CSCS");473.if (CSCS > -1)474. {475. str = temp_gsm_str_buf.Substring(CSCS);476.string[] content = str.Trim().Split(':');477.if (content.Length > 1)478. {479. INF_GSM_CSCS = content[1].ToString().Replace("OK", "").Replace("\r\n", "").Replace("\"", "");480. GSM_RST_ACT++;481. }482. temp_gsm_str_buf = "";483. }484.485.int CSCA = temp_gsm_str_buf.IndexOf("+CSCA");486.if (CSCA > -1)487. {488. str = temp_gsm_str_buf.Substring(CSCA);489.string[] content = str.Trim().Split(':');490.if (content.Length > 1)491. {492. INF_GSM_CSCA = content[1].ToString().Replace("OK", "").Replace("\r\n", "").Replace("\"", "");493. GSM_RST_ACT++;494. }495. temp_gsm_str_buf = "";496. }497.498.499.int CNMI = temp_gsm_str_buf.IndexOf("+CNMI");500.if (CNMI > -1)501. {502. str = temp_gsm_str_buf.Substring(CNMI);503.string[] content = str.Trim().Split(':');504.if (content.Length > 1)505. {506. INF_GSM_CNMI = content[1].ToString().Replace("OK", "").Replace("\r\n", "");507. GSM_RST_ACT++;508. }509. temp_gsm_str_buf = "";510. }511.512. }513.//514.switch (GSM_RST_ACT)515. {516.case 0: { GsmWrite("ATE0\r"); GSM_RST_ACT++; break; } 517.case 1: { GsmWrite("AT+CSQ\r"); break; }518.case 2: { GsmWrite("AT+CMGF=1\r"); GSM_RST_ACT++; break; } 519.case 3: { GsmWrite("AT+CSCS?\r"); break; }520.case 4: { GsmWrite("AT+CSCA?\r"); break; }521.case 5: { GsmWrite("AT+CMGF=0\r"); GSM_RST_ACT++; break; } 522.523.//AT+CNMI=0,0,0,0524.//case 6: { GsmWrite("AT+CNMI=3,1,0,0\r"); GSM_ACT++; break ; }525.case 6: { GsmWrite("AT+CNMI=0,0,0,0\r"); GSM_RST_ACT++; bre ak; }526.527.case 7: { GsmWrite("AT+CNMI?\r"); break; } 528.case 8:529. {530. INF_GSM_State = true;531. selfCheckingTimer.Enabled = false; 532.533. revTimer.Enabled = true;//启动接收534.535.//btnSendTestSM.Enabled = true; 536.//checkBox1.Enabled = true;537.538.//btnSendTestSM.Enabled = true; 539.//timer_gsm_REST.Enabled = false; 540.break;541. }542.543.default:544. {545. selfCheckingTimer.Enabled = false; 546.547.548.549.//timer_gsm_REST.Enabled = false; 550. INF_GSM_State = false;551. MessageBox.Show("短信猫自检失败!"); 552.553.554.break;555. }556. }557. }558.559. #endregion560.561.private void GsmWrite(string str)562. {563. Port.Write(str);564. Console.Write(str);565. }566.567.568.public int GetSMCount()569. {570.return alRecevingSM.Count;571. }572. }573.}在短信接收上,上面的代码实现了对垃圾号码、或着非授权号码进行了简单过滤。
优秀的短信验证码模板-回复1. 【网站/APP名】验证码:【验证码】,您正在进行操作,请勿将验证码泄露给他人。
2. 【网站/APP名】验证码:【验证码】,用于身份验证,请在5分钟内完成操作。
3. 尊敬的用户,您的验证码为【验证码】,请妥善保管,切勿泄露给他人。
4. 【网站/APP名】验证码:【验证码】,您正在进行重要操作,请勿泄露给任何人。
5. 亲爱的用户,您的验证码是【验证码】,请在页面中输入完成操作。
6. 【网站/APP名】验证码:【验证码】,用于验证您的身份,请勿转发他人。
7. 【网站/APP名】验证码:【验证码】,请您尽快输入以完成操作,切勿泄露给他人。
8. 尊敬的用户,您的验证码是【验证码】,请在页面中输入以完成验证。
9. 【网站/APP名】验证码:【验证码】,如非本人操作,请忽略该验证码。
10. 亲爱的用户,您的验证码是【验证码】,请勿将验证码透露给他人。
11. 【网站/APP名】验证码:【验证码】,请勿将验证码提供给他人,以防个人信息泄露。
12. 亲爱的用户,您正在进行重要操作,请使用验证码【验证码】确认您的身份。
13. 【网站/APP名】验证码:【验证码】,请妥善保管,谢谢。
14. 尊敬的用户,您的验证码是【验证码】,请在5分钟内输入验证完成操作。
15. 【网站/APP名】验证码:【验证码】,请在页面中输入以确认您的身份。
16. 亲爱的用户,您的验证码是【验证码】,请勿将验证码泄露给他人。
17. 【网站/APP名】验证码:【验证码】,仅用于您的身份验证,请勿转发给他人。
18. 【网站/APP名】验证码:【验证码】,请勿将验证码告知他人,以防泄露个人信息。
19. 尊敬的用户,您的验证码是【验证码】,请在页面中输入以完成操作验证。
20. 亲爱的用户,您的验证码是【验证码】,请在5分钟内使用以验证身份。
免费发短信的方法
1. 使用手机运营商的免费短信服务,通常会有一定限制。
2. 下载手机应用程序,如WhatsApp、Messenger或WeChat等,可以发送免费短信。
3. 在电脑上使用免费短信网站,如Google Voice或Textem等。
4. 使用免费短信应用程序,如TextNow或TextPlus等。
5. 通过电子邮件发送短信,一些手机运营商允许发送特定格式的电子邮件作为短信。
6. 使用网页短信服务发送短信,如SendSMSNow或SendAText等。
7. 使用VoIP服务发送短信,如Skype或Google Voice等。
8. 利用社交媒体平台的短信功能发送免费短信,如Facebook Messenger、Instagram或Snapchat等。
9. 通过手机运营商的软短信服务,如彩信或视频短信等。
10. 加入手机提供的套餐计划,其中包括免费短信。
11. 参加手机应用程序的促销活动,有时可以获得免费短信额度。
12. 利用互联网电话服务发送短信,如Skype或Viber等。
13. 在免费Wi-Fi环境下使用短信应用程序发送短信,不需要使用手机网络。
7个免费发手机短信的网站1.飞网传信(飞利浦公司免费手机短信)。
网址:(注册入口)优点:免费短信,移动及联通用户都可以注册、接收、互发。
速度快,即发即收,字数50个汉字。
网站稳定可长期使用。
初始注册限50条,如要增加短信必须在论坛发帖子赚取积分或参加本站活动换取短信,发几个帖子就行,非常容易。
2.麻烦网网址:除了收费的短信外,还有限制每条为35个字的“快乐短信”,这是免费的,只能移动用户使用。
但是需要手机注册。
3.雪宝宝短信在线网址:注册一个账号即可,不需要手机注册。
可以发给联通和移动(网上可以免费发给联通的网址实在不多)。
站长保证无论是发送方还是接受方都不会收费。
好处:所有的短信发送网站上都有记录的,方便你查询和发给其他人。
短信可以长达128个汉字。
在实际测试中,发现发给联通的有时候会出现接收方收不到短信的情况。
据网站说明可能会开展积分制度,积分高的用户可以保证发送成功率为100%。
这个网站除了免费短信外,还有免费留言簿、免费计数器、免费的网络电子相册?登录后还可以查询邮编、区号和手机号所在地。
4.zmcc网址:浙江移动的官方网站。
需要浙江移动的手机才能注册。
发送范围有限,据测试,至少浙江附近的移动手机是能收到的。
目前是免费的,但今后可能要收费,不过收费也是0.1元一条。
好处:上面还有通讯录之类的,便于你把常用的手机号码存在上面。
而且是官方的网站,注册了手机号也应该不会乱来。
不像有些网站知道了你的手机号马上给你一个包月。
5.生命颜色社区网址:不需要注册手机号码,只需要注册论坛账号就可以给所有移动手机发送。
注意不登录是看不到免费发送手机短信栏目的。
可以自定义短信署名。
限制短信长度为160个字符。
实际测试中,有时候会发出去了,但对方会收不到。
目前确实免费。
注意不要点击“发送给联通请按这里”这个链接,到网易界面上去了,那可是收费的……6.浙大无线工作坊网址:他们的目的是配合中国移动精品网络,推广移动梦网。
客户接口说明客户接口说明 1第一章发送接口 21.1 请求地址 21.2参数说明 21.3返回值 2第二章余额及已发送量查询接口 32.1 请求地址 32.2参数说明 32.3返回值 3第三章非法关键词查询 43.1 请求地址 43.2参数说明 43.3返回值 4第四章状态报告接口 54.1 请求地址 54.2参数说明 54.3返回值 54.4错误返回值——状态报告请求错误返回格式及对应值 6第五章上行接口 65.1 请求地址 65.2参数说明 65.3返回值 75.4错误返回值——回复请求错误返回格式及对应值 7接口说明:客户接口部分提供http url方式的接口,根据客户需求可以提供相应接口,接口编码方式采用统一的UTF-8接口地址 :8001第一章发送接口1.1 请求地址请求地址是客户接口程序调用时请求的url地址,采用的是http post 接口,地址是:8001/sms.aspx 对应UTF-8:8001/smsGBK.aspx 对应GB2312入口地址一般不会发生变化,当发生变化的时候,会通知接口用户1.2参数说明:8001/sms.aspx:8001/smsGBK.aspx例如::8001/sms.aspx?action=send&account=账号&password=密码&mobile=手机号&content=内容&sendTime=1.3返回值在接收到客户端发送的http请求后,返回以xml的方式返回处理结果。
格式为:<?xml version="1.0" encoding="utf-8" ?><returnsms><returnstatus>status</returnstatus> ---------- 返回状态值:成功返回Success 失败返回:Faild<message>message</message> ---------- 返回信息:见下表<remainpoint> remainpoint</remainpoint> ---------- 返回余额<taskID>taskID</taskID> ----------- 返回本次任务的序列ID<successCounts>successCounts</successCounts> --成功短信数:当成功后返回提交成功短信数</returnsms>第二章余额及已发送量查询接口2.1 请求地址请求地址是客户接口程序调用的时候请求的url地址,采用的是http post 接口,地址是:8001/sms.aspx:8001/smsGBK.aspx入口地址一般不会发生变化,当发生变化的时候,会通知接口用户2.2参数说明例如:action=overage&userid=&account=账号&password=密码2.3返回值<?xml version="1.0" encoding="utf-8" ?><returnsms><returnstatus>status</returnstatus>-------返回状态值:成功返回Success 失败返回:Faild<message>message</message>--------------返回信息提示:见下表<payinfo>payinfo</payinfo>--------------返回支付方式后付费,预付费<overage>overage</overage>-------------返回余额<sendTotal>sendTotal</sendTotal>----返回总点数当支付方式为预付费是返回总充值点数</returnsms>第三章非法关键词查询3.1 请求地址请求地址是客户接口程序调用的时候请求的url地址,采用的是http post 接口,地址是:8001/sms.aspx:8001/smsGBK.aspx入口地址一般不会发生变化,当发生变化的时候,会通知接口用户3.2参数说明例如:action=checkkeyword&userid=&account=账号&password=密码&content=内容3.3返回值<?xml version="1.0" encoding="utf-8" ?><returnsms><message>message</message>--------------返回信息提示:见下表</returnsms>第四章状态报告接口4.1 请求地址请求地址是客户接口程序调用的时候请求的url地址,采用的是http post 接口,地址是:8001/statusApi.aspx入口地址一般不会发生变化,当发生变化的时候,会通知接口用户4.2参数说明例如:action=query&userid=&account=账号&password=密码4.3返回值<?xml version="1.0" encoding="utf-8" ?><returnsms><statusbox><mobile>134********</mobile>-------------对应的手机号码<taskid>1212</taskid>-------------同一批任务ID<status>10</status>---------状态报告----10:发送成功,20:发送失败<receivetime>2011-12-02 22:12:11</receivetime>-------------接收时间<errorcode>DELIVRD</errorcode>-上级网关返回值,不同网关返回值不同,仅作为参考</statusbox>。