using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace SendSMS { public class Program { static void Main(string[] args) { Sendsms.Send(); Console.ReadKey(); } } public class SendSmsBase { public string Name { get; set; } //用戶名 public string Key { get; set; } //接口秘鑰 public virtual string SendSmsInfo(string smsMob, string smsText) { return string.Empty; } } public class WJSendSms : SendSmsBase { public WJSendSms() { Name = "用戶名"; //用戶名 Key = "密鑰"; //接口秘鑰 } public override string SendSmsInfo(string smsMob, string smsText) { string url = "http://utf8.sms.webchinese.cn/?Uid=" + Name + "&key=" + Key + "&smsMob=" + smsMob + "&smsText=" + smsText; string strRet = null; if (url == null || url.Trim().ToString() == "") { return strRet; } string targeturl = url.Trim().ToString(); try { HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl); hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; hr.Method = "GET"; hr.Timeout = 30 * 60 * 1000; WebResponse hs = hr.GetResponse(); Stream sr = hs.GetResponseStream(); StreamReader ser = new StreamReader(sr, Encoding.Default); strRet = ser.ReadToEnd(); } catch (Exception ex) { strRet = null; } return GetResult(strRet); } /// <summary>確認返回信息 </summary> public string GetResult(string strRet) { int result = 0; try { result = int.Parse(strRet); switch (result) { case -1: strRet = "沒有該用戶賬戶"; break; case -2: strRet = "接口密鑰不正確,不是賬戶登陸密碼"; break; case -21: strRet = "MD5接口密鑰加密不正確"; break; case -3: strRet = "賬戶余額不足"; break; case -11: strRet = "該用戶被禁用"; break; case -14: strRet = "短信內容出現非法字符"; break; case -4: strRet = "手機號格式不正確"; break; case -41: strRet = "手機號碼為空"; break; case -42: strRet = "短信內容為空"; break; case -51: strRet = "短信簽名格式不正確,接口簽名格式為:【簽名內容】"; break; case -6: strRet = "IP限制"; break; default: strRet = "發送短信數量:" + result; break; } } catch (Exception ex) { strRet = ex.Message; } return strRet; } } public class DXTSMSsend : SendSmsBase { public DXTSMSsend() { Name = "用戶名"; Key = "密鑰"; } public override string SendSmsInfo(string mobile, string content) { string PostUrl = "http://sms.106jiekou.com/utf8/sms.aspx"; string returncode = string.Empty; string postStrTpl = "account={0}&password={1}&mobile={2}&content={3}"; UTF8Encoding encoding = new UTF8Encoding(); byte[] postData = encoding.GetBytes(string.Format(postStrTpl, Name, Key, mobile, content)); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); 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); returncode = reader.ReadToEnd(); } else { returncode = "000"; } return GetResult(returncode); } public string GetResult(string returncode) { string returntext = string.Empty; switch (Convert.ToInt32(returncode)) { case 100: returntext = "發送成功"; break; case 101: returntext = "驗證失敗"; break; case 102: returntext = "手機號碼格式不正確"; break; case 103: returntext = "會員級別不夠"; break; case 104: returntext = "內容未審核"; break; case 105: returntext = "內容過多"; break; case 106: returntext = "賬戶余額不足"; break; case 107: returntext = "Ip受限"; break; case 108: returntext = "手機號碼發送太頻繁,請換號或隔天再發"; break; case 109: returntext = "帳號被鎖定"; break; case 110: returntext = "手機號發送頻率持續過高,黑名單屏蔽數日"; break; case 120: returntext = "系統升級"; break; default: returntext = "訪問失敗"; break; } return returntext; } } public class SendSmsFactory { public static SendSmsBase CreateFactory(string className) { SendSmsBase sendsms = null; switch (className) { case "WJSendSms": sendsms = new WJSendSms(); break; case "DXTSMSsend": sendsms = new DXTSMSsend(); break; default: sendsms = null; break; } return sendsms; } } public class Sendsms { public static void Send() { SendSmsBase SmsClass = new SendSmsBase(); string content = "【XX】驗證碼:6666,一天內提交有效,如不是本人操作請忽略!"; SmsClass = SendSmsFactory.CreateFactory("DXTSMSsend"); string returncode=SmsClass.SendSmsInfo("15110088888", content); if (returncode == "賬戶余額不足") { SmsClass = SendSmsFactory.CreateFactory("WJSendSms"); SmsClass.SendSmsInfo("15110088888", content); } Console.WriteLine(returncode); } } }