最近工作,一直在做发送短信的功能,当系系统终端收到消息,如果管理员没有在电脑旁边,这时候收到一条消息,要及时通知其他人做出处理,所有该项目必须具备发送短信的功能。

我们的发送短信的功能是独立的一个模块,配置发送短信的电话、短信内容等,接收消息,发送消息。要发送短信的电话号码和短信的模板在配置文件中写好。如下我写了一个小例子,我要给自己发一封如下的消息:

姓名:赵亚盟 消息类型:邀请函 消息内容: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);}

另外配备了一个短信猫,我们要发送的短信内容和电话都存入了数据库中,短信猫直接读取数据库,将短信发送出去。

手机叮叮一响,短信收到。完工。

简单的发短信,难不倒程序员相关推荐

  1. 用Python每天自动给女朋友免费发短信,谁说程序员不懂浪漫?

    前言 之前发过一篇文章,用 Python 制作的给父母天气预报提醒的小工具天气变冷了,给父母制作一个天气提醒小助手,这篇文章我同步到博客上之后,有读者在评论区留言,对于部分微信没有网页版接口,导致无法 ...

  2. 【项目】itdage-java获取天气和发短信

    输出json数据: public class Util {//public static String getString(String url) throws IOException {try {/ ...

  3. Android安卓——实现发短信功能的代码

    本处给出的是简单的发短信的笼统代码过程,可根据自己的知识,结合起来进行完善. 在配置文件中给权限配置 <uses-permission android:name="android.pe ...

  4. iOS调用系统发短信功能详解

    iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...

  5. iOS开发之系统发短信功能详解

    iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信.2,程序内调用系统发短信.第二种的好处是用户发短信之后还可以回到app.这对app来说非常重要. 程序外调用系统发短信 这个方法其实很 ...

  6. 7款免费发短信软件,看看哪一款适合你

    说到发短信,大部分人的第一反应都是手机自带的短信功能,但是很多人不知道的是,手机发短信对短信数量是严格控制的,具体数量限制为: 非节假日每小时不得超过200条,每天总量不超过1000条; 节假日期间, ...

  7. viber免费打电话,发短信。五个月用户超千万:简单、免费爆炸式传播

    免费通话应用Viber从去年12月发布到现在已经有了1000万用户.它比Skype更像是真正的电话. 文|CBN记者 朱小坤 在苹果App Store里猛砸钱可能对推进应用排名没什么作用.以色列人Ta ...

  8. android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  9. android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

最新文章

  1. notepad php必用功能,Notepad中值得一提的特性
  2. QT与openCV,与PCL结合!
  3. foreach是同步还是异步JAVA,Java中foreach与正常for循环效率对比
  4. 简单的C++线程类实现, windows平台
  5. Spark源码系列(五)分布式缓存
  6. osc mysql_MySQL学习(一) - osc_0sz5p35w的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 基于bitbucket中央库的Git操作
  8. 数据挖掘实践(金融风控)——task5:模型融合
  9. Android Service 的重启
  10. RDA实现SQL CE与SQL Server间数据存取
  11. C#winfrom播放音乐
  12. SQL Server-【知识与实战VIII】触发器(下)
  13. STM8S003F3P6采集DS18B20数码管显示 串口通讯
  14. 海量前端后台Java源码模板下载
  15. 数据库 关系代数表达式
  16. Ito‘s lemma伊藤引理
  17. rank函数python_Python pandas.DataFrame.rank函数方法的使用
  18. [转载]推荐两篇文章
  19. LTE网络中的无线安全的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 抗变态或亲变态是更好的解决方案

热门文章

  1. 一对一社交直播交友系统开发源码,交朋友新模式
  2. 源支付3.1版本全开源版+店员监控软件+监控APP源码
  3. Linux 修改主机名(立即永久生效)
  4. nginx使用lua实战
  5. 【算法导论】三门问题-蒙提霍尔问题
  6. 【微信小程序-0基础入门】项目发布完整流程
  7. 为什么要学习C++,学好C++可以做什么?
  8. 人生本来就是一场赌博,中年危机的程序员就真的没机会了吗?
  9. 猿创征文 | 15款音视频开发者必备实用工具,看看你用过几个?
  10. chrome headless截图