昊仔

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用.NET从零开始打造短信应用系统之三、四、五

(2010-04-13 10:09:10)
标签:

it

分类: 关于编程

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

小问号:(打电话)蒋老师,短信发送成功,真是值得高兴的一件事!原来想着多难的东西,真的像您说的那样:“一层窗户纸,一捅就破!”现在想想清代澎端淑先生《为学》篇中:“天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。”简直是真理! 对了,蒋老师,无论工资发放还是工作通知都是群发啊,我是通过循环一条一条发送还是?给我提个醒吧。 蒋老师:实际上SkMultiSend()函数本身就提供了群发。根据我的经验原则上最好每次向服务器提交70-100条短信为好,如果一次有更多的短信要发,可以使用软件控制分批发送(譬如,一次要向800个客户发送短信,那么可以分十批发送),否则可能造成数据包过大,传输容易中断。  
小问号:我看着SkMultiSend()的样子就像群发的样子! 蒋老师:好了,你总是事后军师,马后炮!我还是给你发个例子吧。

小问号:谢谢蒋老师! 蒋老师:已经发到你的信箱里了,如果不明白再问我!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

  如果你的第一个案例已经成功发送了,群发也非常简单。界面部分与第一个案例相同,显示两个文本框,一个用来输入手机号码,一个用来输入短信内容。   这个案例中重点是使用你要熟悉C#中字符串类中Replace()的用法。

第一步:打开SMS项目

使用.NET从零开始打造短信应用系统之三、四、五

第二步:添加Multiple.aspx文件 sms_0202.jpg 添加页面文件:Multiple.aspx与代码文件:Multiple.aspx.cs
第三步:实现实时群发 sms_0203.jpg   请在手机号码位置输入您要发送的多个手机号码,用“,”隔开,内容处输入70字以内的内容,然后点击“发送”按钮。   在实验中请节约发送短信条数,限发四条。(扣的都是蒋老师的钱噢)

代码重点讲解:   对于Multiple.aspx页面文件由于只包含了两个标签、两个文本框和一个发送按钮,与Simple相同不再详细讲解,具体参考代码。

  着重讲解一下Multiple.aspx.cs中的代码与Simple.aspx.cs改动部分。

  (1)发送单一手机号码变为手机列表,注意看二者区别

    Simple.aspx.cs代码:     //获取手机号码与短信内容     string cSendPhoneNum = tbPhoneNum.Text.Trim();     string cSendContent = tbContent.Text.Trim();

    Multiple.aspx.cs代码     //获取手机号码与短信内容     string cSendPhoneNum = tbPhoneNum.Text.Trim();     //*******注意此处改动:cSendPhoneNum中的”,”替换为"\r\n"回车换行符号******     string cSendPhoneNumList = cSendPhoneNum.Replace(",", "\r\n");     string cSendContent = tbContent.Text.Trim();

  (2)发送短信代码

    Simple.aspx.cs代码:     //初始化iInit返回值为0表示初始化成功,发送短信     if(iInit==0)       SkMultiSend(101, System.DateTime.Now.ToString(), "", cSendPhoneNum, cSendContent, bSuccess, bFailure, out iSuc, out iFail);

    Multiple.aspx.cs代码     //注意改动:cSendPhoneNumList替换了cSendPhoneNum     if (iInit == 0)       SkMultiSend(101, System.DateTime.Now.ToString(), "", cSendPhoneNumList, cSendContent, bSuccess, bFailure, out iSuc, out iFail);

源代码下载:sms.rar

小问号:蒋老师,我的工作(会议)通知、工资发放这两项功能已经搞定耶,但是生日祝福和事务提醒好像不是实时发送啊! 蒋老师:我明天再发给你一个小例子!注意实时群发我没有处理几百条以上同时发的时候需要进一步处理,你要注意噢! 小问号:我知道了,我的项目中已经处理过了! 蒋老师:孺子可教!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

小问号:(打电话)蒋老师,您的邮件已经收到,在此深表谢意!实际上我在收到您的邮件前已经试着用SkMultiSend()函数完成定时发送了。 蒋老师:是吗?进步了,我喜欢!我们学习的过程,在入门之前,往往希望师者能够手把手教我们,而入门之后,也许只需要前辈(借用韩国语,尽管不喜欢韩剧)的一个提醒和思路就够了。

小问号:我越来越感觉自己是个人才了!领导还表扬我呢,他哪知道我晚上回到家经常到凌晨一两点钟还未入睡呢…… 蒋老师:看到你已经找到自信了!但经常熬夜可不是一个好习惯,健康还是第一位的,偶尔熬一下夜尚可,千万别经常。

小问号:蒋老师,我忙去了,也不打扰您了,再见! 蒋老师:再见!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

  我们一起把我发给小问号的这个案例分析一下,本案例是在第一个案例(Simple.aspx实时单发)的基础上稍加改动。界面部分与第一个案例相似,显示五个文本框,一个用来输入手机号码,一个用来输入短信内容,新添三个文本框,用来表示日期、时、分。   这个案例中重点是使用你要熟悉SkMultiSend()函数中ATime的用法。

 

第一步:打开SMS项目

第二步:添加Timer.aspx文件   添加页面文件:Timer.aspx与代码文件:Timer.aspx.cs   第三步:实现定时发送 sms_0302.jpg

 

  (1)请在手机号码位置输入您要发送的手机号码,内容处输入70字以内的内容。   (2)输入计划发送日期(注意格式)、时和分。[实际应用中日期应该选择,返回指定格式。]   (3)然后点击“发送”按钮。   ※ 在实验中请节约发送短信条数,限发两条。

代码重点讲解:   对于Timer.aspx页面文件由于只包含了六个标签、五个文本框和一个发送按钮,具体参考源代码。 着重讲解一下Timer.aspx.cs中的代码与Simple.aspx.cs改动部分。

发送短信代码

Simple.aspx.cs代码:   //初始化iInit返回值为0表示初始化成功,发送短信   if(iInit==0)   SkMultiSend(101, System.DateTime.Now.ToString(), "", cSendPhoneNum, cSendContent, bSuccess, bFailure, out iSuc, out iFail);

Multiple.aspx.cs代码   //注意改动:cAlertTime替换了System.DateTime.Now.ToString()   if (iInit == 0)   {   string cAlertTime = tbDate.Text.Trim() + " " + tbHour.Text.Trim() + ":" + tbMinute.Text.Trim() + ":000";   SkMultiSend(101, cAlertTime, "", cSendPhoneNum, cSendContent, bSuccess, bFailure, out iSuc, out iFail); }

源代码下载:sms04.rar

小问号:蒋老师,看着我的项目一天一天向前推进,这种感觉妙极了! 蒋老师:静候佳音!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

小问号:蒋老师,看着自己的第一个项目马上就要竣工了,真是高兴得不能行! 蒋老师:恐怕你今天专程屁颠屁颠跑来不只是为了告诉我这个吧!是不是短信回复没有搞定?

小问号:不服不行,看来什么都瞒不住您啊! 蒋老师:从技术上讲很简单,但是从现实中来讲,这真是一个难点,连续两年的“央视·315 晚会”使得中国移动、联通等运营商取消了短信回复功能。   参见:http://www.cctv.com/community315/special/C20941/01/      http://news.sina.com.cn/s/2006-06-07/18219145478s.shtml

小问号:那怎么办呢?如何向客户交差呢? 蒋老师:把这两个网址告诉你的客户,客户应该是通情达理的,如果真的不行,让他找移动、联通运营商想办法,我们现在是通过SP(短信业务提供商),正规的SP现在几乎都不提供该项服务。2008年之前都是可以的。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

  由于目前我们所用的MSDP.DLL文件都是“中国·短信”SP所提供的动态链接库,确认目前该SP(短信业余提供商)同样取消了接收短信功能,仅在此作一简要介绍,虽然与我一向强调的动手实践相违背,但也只能如此,如果哪天你用到了,至少还有一点准备。

1、功能:接收上行短信   接收上行短信。接收两天内没有读取的上行短信。两天前的上行信息将读取不到,注意接收。建议3分钟调用一次本接口。

2、函数声明 public static extern int SkReceive( string AMsgID, byte[] AMsgStr, out int AMsgSize);

3、参数说明 <?xml version="1.0" encoding="GB2312"?> <Root>

4、返回值

5、XML文件示例

<我的客户反馈信息> <号码>1393844****</号码> -->上行手机号码 <业务号码>91230</业务号码> -->用户基本扩展号码 + 用户自行扩展号码 <内容>成功没?</内容> -->上行手机内容 <位置>949303</位置> -->此短信在所有上行短信中的序列号 <时间>06022213072000</时间> -->2006年/02月22日/13点07分/2000 </我的客户反馈信息>

<我的客户反馈信息> <号码>1393844****</号码> <业务号码>91230</业务号码> <内容>成功没?</内容> <位置>949306</位置> <时间>06022213075100</时间> </我的客户反馈信息>

<我的客户反馈信息> <号码>1393844****</号码> <业务号码>91230</业务号码> <内容>干什么?</内容> <位置>949443</位置> <时间>06022213284100</时间> </我的客户反馈信息>

</Root>

6、具体示例   SkReceive( MsgID, MsgStr, AMsgSize);

  源代码下载:没有。

小问号:蒋老师,今天看来一无所获!我想修改我的密码和查询余额如何做呢? 蒋老师:实践重要,理论一样重要!不能说一无所获。至于修改密码和查询余额请参考这个下一个小案例吧。

posted on 2013-08-12 10:28  昊仔  阅读(373)  评论(0编辑  收藏  举报