简单的发短信,难不倒程序员
最近工作,一直在做发送短信的功能,当系系统终端收到消息,如果管理员没有在电脑旁边,这时候收到一条消息,要及时通知其他人做出处理,所有该项目必须具备发送短信的功能。
我们的发送短信的功能是独立的一个模块,配置发送短信的电话、短信内容等,接收消息,发送消息。要发送短信的电话号码和短信的模板在配置文件中写好。如下我写了一个小例子,我要给自己发一封如下的消息:
姓名:赵亚盟 消息类型:邀请函 消息内容:2016年1月1号万达广场参加元旦晚会,具体通知请看邮件! 通知时间:2015-12-26 09:55:28.
配置文件中配置相关信息:
// 配置文件config中配置电话和短信内容模板<configSections><sectionGroup name="SMS.Manager"><section name="TEL" type="System.Configuration.NameValueSectionHandler"/><section name="MSG" type="System.Configuration.NameValueSectionHandler"/></sectionGroup></configSections><SMS.Manager><TEL><!--增加的电话号码用"|"隔开--><add key="Test" value="18832639**3|1368158***6"/></TEL><MSG><add key="MSGTest" value="姓名:{0} 消息类型:{1} 消息内容:{2} 通知时间:{3}."/></MSG></SMS.Manager>
这里只是写了一个小例子,所有写了一些假数据
static void Main(string[] args){try{ISMSTest iSMSTest = new SMSTest();SMSEntity entity = new SMSEntity();entity.Id = Guid.NewGuid().ToString();entity.Name = "赵亚盟";entity.Type = "邀请函";entity.Content = "2016年1月1号万达广场参加元旦晚会,具体通知请看邮件!";entity.Time=DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");iSMSTest.Update(entity);Console.WriteLine(entity);}catch (Exception){throw;}}
实体:
public class SMSEntity{/// <summary>/// 消息ID/// </summary>public string Id{ get; set; }/// <summary>/// 消息类型/// </summary>public string Type{ get; set; }/// <summary>/// 姓名/// </summary>public string Name{ get; set; }/// <summary>/// 消息内容/// </summary>public string Content{ get; set; }/// <summary>/// 通知时间/// </summary>public string Time{ get; set; }}
接口:
public interface ISMSTest{void Update(SMSEntity smsEntity);}
实现类:
public class SMSTest:ISMSTest{public void Update(SMSEntity smsEntity){if (smsEntity == null){return;}Appconfig.Init(); //初始化配置文件 SMSDataOut SendMessage = new SMSDataOut(); //发送短信string[] tel = Appconfig.htTEL["Test"].ToString().Split('|'); //获取要发送短信的电话号码foreach (string str in tel) //遍历要发送短信的所以电话号码{SendMessage.SendSMSMessage(smsEntity, str);}}}
初始化配置文件,读取要发送短信的电话号码和短信模板;
public class Appconfig{public static Hashtable htTEL = new Hashtable(); //电话public static Hashtable htMSG = new Hashtable(); //短信模板private static bool InitConfigflag = false; //设置标志位public static void Init(){if (InitConfigflag){return;}else{//加载配置文件NameValueCollection nc = (NameValueCollection)ConfigurationManager.GetSection("SMS.Manager/TEL");for (int i = 0; i < nc.AllKeys.Length; i++){//装载电话号码htTEL.Add(nc.AllKeys[i], nc[i]);}//加载配置文件nc = (NameValueCollection)ConfigurationManager.GetSection("SMS.Manager/MSG");for (int i = 0; i < nc.AllKeys.Length; i++){//装载短信模板htMSG.Add(nc.AllKeys[i], nc[i]);}InitConfigflag = true;}}}
获取短信内容:
public class SMSDataOut{/// <summary>/// 发送短信/// </summary>/// <param name="smsEntity">短信实体</param>/// <param name="telNo">电话号码</param>/// <returns></returns>public bool SendSMSMessage(SMSEntity smsEntity, string telNo){if (smsEntity == null || string.IsNullOrEmpty(telNo))return false;//获取短信内容string msg = GetSMSMessage(smsEntity);构建短信实体MSG_OUTBOX mo = DataOutDrivers.CreateNewOutBox(telNo, msg);发送短信DataOutDrivers.AddSMSBox(mo);return true;}/// <summary>/// 获取短信/// </summary>/// <param name="messageEntity"></param>/// <returns></returns>public string GetSMSMessage(SMSEntity smsEntity){string messageInfo="";messageInfo = string.Format(Appconfig.htMSG["MSGTest"].ToString(),smsEntity.Name,smsEntity.Type,smsEntity.Content,smsEntity.Time );//短信信息内容return messageInfo;}
构建短信实体:
/// <summary>/// 创建短信/// </summary>/// <param name="telNo">电话号码</param>/// <param name="msg">短信内容</param>/// <returns></returns>public static MSG_OUTBOX CreateNewOutBox(string telNo, string msg){MSG_OUTBOX newMo = new MSG_OUTBOX();newMo.EXPRESSLEVEL = 2;//发送级别,系统分为3个级别: 0 为最高优先级1 较高优先级 2 普通优先级newMo.MSGTYPE = 0;//0= 普通短信 1 = 彩信 (系统默认为1,彩信)2 = wap push3 = 免提短信(快闪短信)newMo.RECEIVER = telNo;newMo.MSGTITLE = msg;return newMo;}
发送短信:
public static void AddSMSBox(MSG_OUTBOX outmsg){ //发送结果/bool bRet = ServiceFactory.GetMSGData().AddMSGOUTBOX(outmsg);}
另外配备了一个短信猫,我们要发送的短信内容和电话都存入了数据库中,短信猫直接读取数据库,将短信发送出去。
手机叮叮一响,短信收到。完工。
简单的发短信,难不倒程序员相关推荐
- 用Python每天自动给女朋友免费发短信,谁说程序员不懂浪漫?
前言 之前发过一篇文章,用 Python 制作的给父母天气预报提醒的小工具天气变冷了,给父母制作一个天气提醒小助手,这篇文章我同步到博客上之后,有读者在评论区留言,对于部分微信没有网页版接口,导致无法 ...
- 【项目】itdage-java获取天气和发短信
输出json数据: public class Util {//public static String getString(String url) throws IOException {try {/ ...
- Android安卓——实现发短信功能的代码
本处给出的是简单的发短信的笼统代码过程,可根据自己的知识,结合起来进行完善. 在配置文件中给权限配置 <uses-permission android:name="android.pe ...
- iOS调用系统发短信功能详解
iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...
- iOS开发之系统发短信功能详解
iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...
- 7款免费发短信软件,看看哪一款适合你
说到发短信,大部分人的第一反应都是手机自带的短信功能,但是很多人不知道的是,手机发短信对短信数量是严格控制的,具体数量限制为: 非节假日每小时不得超过200条,每天总量不超过1000条; 节假日期间, ...
- viber免费打电话,发短信。五个月用户超千万:简单、免费爆炸式传播
免费通话应用Viber从去年12月发布到现在已经有了1000万用户.它比Skype更像是真正的电话. 文|CBN记者 朱小坤 在苹果App Store里猛砸钱可能对推进应用排名没什么作用.以色列人Ta ...
- android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
最新文章
- notepad php必用功能,Notepad中值得一提的特性
- QT与openCV,与PCL结合!
- foreach是同步还是异步JAVA,Java中foreach与正常for循环效率对比
- 简单的C++线程类实现, windows平台
- Spark源码系列(五)分布式缓存
- osc mysql_MySQL学习(一) - osc_0sz5p35w的个人空间 - OSCHINA - 中文开源技术交流社区...
- 基于bitbucket中央库的Git操作
- 数据挖掘实践(金融风控)——task5:模型融合
- Android Service 的重启
- RDA实现SQL CE与SQL Server间数据存取
- C#winfrom播放音乐
- SQL Server-【知识与实战VIII】触发器(下)
- STM8S003F3P6采集DS18B20数码管显示 串口通讯
- 海量前端后台Java源码模板下载
- 数据库 关系代数表达式
- Ito‘s lemma伊藤引理
- rank函数python_Python pandas.DataFrame.rank函数方法的使用
- [转载]推荐两篇文章
- LTE网络中的无线安全的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 抗变态或亲变态是更好的解决方案