.net 发短信案例
1. 首先找到第三方发短信接口文档。
2.根据接口文档自己写个接口,调用他们发短信url , 可以先写个小demo.。
我这用的是 胜券短信 。
/// <summary>/// 短信发送/// </summary>/// <param name="sms_phone">短信发送对象</param>/// <param name="sms_text">短信发送内容</param>/// <returns></returns>public static msgSendInfo SendSMS(string sms_phone, string sms_text){StringBuilder sms = new StringBuilder();//(模板发送)的只需要对sms_text、sms_phone进行base64加密if (sms_template == "1"){//加密手机号 用了base64加密后,要把特殊字符串替换(文档中没有详细写,记得看下人家的案例)sms_phone = GetToStr(EncryptionHelper.EncodeBase64(Encoding.UTF8, sms_phone));sms_text = GetToStr(EncryptionHelper.EncodeBase64(Encoding.UTF8, sms_text));}else{sms_text = GetToStr(EncryptionHelper.EncodeBase64(Encoding.UTF8, sms_text));}sms.AppendFormat("app_key={0}", app_key);// app_version为2表示需要加签名if (app_version == version){//需要加签名sms.AppendFormat("&sms_sign", sms_sign);}//这些都是参数,看你们怎么去定义,可以放在webconfig中sms.AppendFormat("&app_version={0}", app_version);sms.AppendFormat("&sms_phone={0}", sms_phone);sms.AppendFormat("&sms_text={0}", sms_text);sms.AppendFormat("&sms_sub_account_id={0}", sms_sub_account_id);sms.AppendFormat("&sms_priority={0}", sms_priority);sms.AppendFormat("&sms_flag={0}", flag);sms.AppendFormat("&sms_template={0}", sms_template);sms.AppendFormat("&sms_timersend_time={0}", sms_timersend_time);sms.AppendFormat("&sms_isreplay={0}", sms_isreplay);sms.AppendFormat("&sms_isrepeat={0}", sms_isrepeat);//应用签名(产生方式:将所有参数升序排序,然后将参数与内容相连,在前后加app_secret,将整个内容采用md5的方式加密)MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();byte[] app_sign = md5Hasher.ComputeHash(Encoding.Default.GetBytes(app_secret + sms.ToString() + app_secret));//byte[] app_sign = MD5(sms.ToString() + app_secret);var sb = new StringBuilder();foreach (var ch in app_sign){sb.Append(string.Format("{0:X2}", ch));}sms.AppendFormat("&app_sign={0}", sb.ToString());string resp = SendMsgByHttp(url, sms.ToString(), Encoding.UTF8);msgSendInfo sendInfo = JsonConvert.DeserializeObject<msgSendInfo>(resp);return sendInfo;}
public static class restMgs{public static string GetToStr(string sStr){return sStr.Replace("%", " %25").Replace("+", "%2B").Replace("/", "%2F").Replace("?", "%3F").Replace("#", "%23").Replace("&", "%26");}public static string StrToHex(string mStr) //返回处理后的十六进制字符串{return BitConverter.ToString(ASCIIEncoding.Default.GetBytes(mStr)).Replace("-", " ");}public static string HexToStr(string mHex) // 返回十六进制代表的字符串{mHex = mHex.Replace(" ", "");if (mHex.Length <= 0) return "";byte[] vBytes = new byte[mHex.Length / 2];for (int i = 0; i < mHex.Length; i += 2)if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2]))vBytes[i / 2] = 0;return ASCIIEncoding.Default.GetString(vBytes);}public static string PushToWeb(string weburl, string data, Encoding encode){try{byte[] byteArray = encode.GetBytes(data);HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(weburl));webRequest.Method = "POST";webRequest.ContentType = "application/x-www-form-urlencoded";webRequest.ContentLength = byteArray.Length;Stream newStream = webRequest.GetRequestStream();newStream.Write(byteArray, 0, byteArray.Length);newStream.Close();//接收返回信息:HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();StreamReader aspx = new StreamReader(response.GetResponseStream(), encode);string msg = aspx.ReadToEnd();aspx.Close();response.Close();return msg;}catch (Exception ex){throw ex;}}/// <summary>/// Base64编码/// </summary>/// <param name="thisString"></param>/// <returns></returns>public static string ToBase64(string thisString){if (thisString == "")return string.Empty;return Convert.ToBase64String(Encoding.UTF8.GetBytes(thisString));}/// <summary> /// 将指定字符串进行Base64编码。 /// </summary> /// <param name="codeType">GB2312</param> /// <param name="code">具体html字符串</param> /// <returns></returns> public static string EncodeBase64(string codeType, string code){string encode = "";byte[] bytes = Encoding.GetEncoding(codeType).GetBytes(code);encode = Convert.ToBase64String(bytes);return encode;}/// <summary>/// Base64加密,采用utf8编码方式加密/// </summary>/// <param name="source">待加密的明文</param>/// <returns>加密后的字符串</returns>public static string Base64Encode(string source){return Base64Encode(Encoding.UTF8, source);}/// <summary>/// Base64加密/// </summary>/// <param name="encodeType">加密采用的编码方式</param>/// <param name="source">待加密的明文</param>/// <returns></returns>public static string Base64Encode(Encoding encodeType, string source){string encode = string.Empty;byte[] bytes = encodeType.GetBytes(source);try{encode = Convert.ToBase64String(bytes);}catch{encode = source;}return encode;}/// <summary>/// Base64解密/// </summary>/// <param name="encodeType">解密采用的编码方式,注意和加密时采用的方式一致</param>/// <param name="result">待解密的密文</param>/// <returns>解密后的字符串</returns>public static string Base64Decode(Encoding encodeType, string result){string decode = string.Empty;byte[] bytes = Convert.FromBase64String(result);try{decode = encodeType.GetString(bytes);}catch{decode = result;}return decode;}}
/// <summary>/// 短信发送返回的对象/// </summary>[Serializable]public class msgSendInfo{/// <summary>/// 返回true或者flase/// </summary>public bool success { get; set; }/// <summary>/// 发送结果编码号/// </summary>public int code { get; set; }/// <summary>/// 信息记录id/// </summary>public int messagelog_id { get; set; }/// <summary>/// 发送信息描述/// </summary>public string msg { get; set; }/// <summary>/// /// </summary>public int task_id { get; set; }}
这是发短信的流程,要是大家有什么好的思路可以告诉我。
1.要是对不同的内容进行群发,是如何?能不能把相同的参数进行封装。进行一次性对不同的手机号和内容发。
2.如何批量修改不相同的数据?
欢迎大家踊跃评论。
.net 发短信案例相关推荐
- 安卓day25快速入门 目录结构 清单 DDMS adb 危险权限 发短信 点击事件 安卓版本...
一.排坑 AndroidStudio非法字符: '\ufeff' 将文件格式改为以UTF-8无BOM格式编码 Sublime Text 保存时 CodeFormatter file is scratc ...
- 使用Android Studio写一个发短信的小案例
废话不多说,直接贴图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutan ...
- Python的模块千奇百怪,居然有自动发短信的模块?
今天跟大家分享的主题是利用python库twilio来免费发送短信. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的 ...
- 手把手教你如何在安卓平台上实现打电话发短信的功能
首发地址 http://www.eoeandroid.com/thread-228079-1-1.html 1 案例目的 本案例通过一个简单通讯工具来巩固android的activity.Linear ...
- python 使用twilio进行发短信
文章目录 1.说明: 2.开始注册账号: 1.官网:https://www.twilio.com/ 2.寻找python的使用案例demo 注意一点,我收到短信的手机号和我申请成功的手机号不是同一个, ...
- 教你怎么用Python,每天自动给女友免费发短信
今天的教程就是教大家怎么发送免费短信给女朋友. 发送短信接口,我知道的常见的有两个平台,一个是 twilio,可以免费发短信 500 条,可发任意信息,一个是腾讯云,可以免费发短信 100 条,需要申 ...
- 免费发短信软件有黑幕
免费发短信软件有黑幕 [案例导读] 把真相说出来,曾令我为难,因为我之前是在SP工作,即无线服务提供商,说白了就是 经常给大家的手机发一些乱七八糟的广告信息之类的商家.其中的黑幕大家未必了解-- [案 ...
- 阿里大鱼进行发短信业务---使用详细步骤-Java操作
文章目录 前言 一.开通短信服务 二.快速学习 三.签名管理 1. 何为签名 2. 添加签名 四.模板管理 1. 何为模板 2. 添加模板 五.Java中使用阿里大鱼 1. 开发文档 2. 用到的依赖 ...
- 技术贴:如何跟刚认识的女孩发短信
这篇文章挺有技术含量,虽然讲的是男女交往,但是其实还是人与人之间交往与处理关系. 对话,人与人之间最普通,但往往也是最有技巧的的交流方式.慢慢地说,迅速地思考,果断地决定去做. 编辑也来按一下:刚上大 ...
最新文章
- 让静态知识动起来:从知识图谱到事理图谱
- Python 结巴分词(1)分词
- Unity 游戏开发技巧集锦之创建自发光材质
- 如何网络推广教大家怎样通过提高用户粘性来助力排名提升?
- 安全技术大系iOS取证分析
- 读《可复制的领导力》
- Java--对象内存布局
- vue 实现 router store 文件自动加载
- 关系代数操作应用、关系元组运算应用
- sql server 2005 使用Log Explorer查看和恢复数据
- java 参数类型转换_java – 如何从通配符类型转换为参数化类型?
- zoj 3747 dp递推
- poj 2195(KM求最小权匹配)
- java list 超出范围_java.sql.SQLException参数索引超出范围(1参数个数,即0)
- 2018-10-09 星期二
- 由矢量电子海图构建海底 TINDEM方法研究
- JavaBean对象转Map对象
- Word批量打印软件/工具
- OpenCV-Python教程:图像金字塔
- 中国半导体仍然弱小 产业生态体系亟需完善