关于短信群发软件的开发

前段时间因为公司要对会员群发短信,因为来不及开发,买了二郎腿软件短信群发软件(800元),在使用中发现当人数过多(上一千)时,速度就会很慢,而且在对方号码错误时,经常会弹出对话框,并中止发送过程。与自已做的消费者管理软件集成度也不高,要用户导出,再导入短信软件。种种不便,引发了我开发短信群发软件的想法。
在csdn论坛上查了一下,发现网上很多牛人已经把源代码都公布出来了。首先是wuzhiwen (蚕蛹) 的贴子。
http://community.csdn.net/Expert/topic/3212/3212036.xml?temp=.4985315

这个免费的控件,没试过,不知道怎么样:
http://www.refound.net/download/soft.asp?id=26

woodlet (木头) 的贴子:
http://community.csdn.net/Expert/topic/3512/3512498.xml?temp=2.967471E-02

相信看完这些贴子,你已经知道怎样做一个完整的短信群发软件了。在这里,把我的一些体会写在这里:
1、发送的间隔时间问题:woodlet (木头) 的做法是 读com口增加重试, 50ms读一次,但是我在实际测试中发现,这种方法仍然存在问题,表现为隔一个号码就会失败。我的理解是每次发送后就会有一个反馈信息,这个反馈需要时间。如果不适当中断一下,就会发送失败。因此,在发送完上一个号码后,线程休息5000毫秒:

        For Each r As DataRow In dt.Rows
            mobilenumber = r("mobile")

            origSendState = GetText(r("sendstate"))

            If origSendState = "" OrElse origSendState = "失败" Then '未发送的和失败的,才进行发送
                If mobilenumber.Length = 11 And mobilenumber.StartsWith("13") Then '是手机号码才发送
                    showMsg(mobilenumber, Me.StatusBarPanel2)
                    SendState = xSMS.Send(Me.txtCenterNumber.Text, r("mobile"), Me.txtSmsContent.Text)
                    showResault(SendState, StatusBarPanel2)
                Else '无效号码不发送短信
                    SendState = "无效"
                End If

                '更新发送状态
                r("sendstate") = SendState
                r.EndEdit()

                Me.ShowSendTotal()

                '不是最后一条记录时,不是无效号码,就Sleep 5秒。
                If cm.Position < cm.Count - 1 And SendState <> "无效" Then
                    Threading.Thread.Sleep(SleepTime.Value)
                End If
            End If

            '移动记录位置
            cm.Position += 1
            dg.Select(cm.Position)
        Next

2、读手机品牌、型号、短信中心号码的问题:经常会出现不能获取手机品牌、型号,不能读取短信中心号码的问题,我的处理是,怱略手机品牌、型号,当出现读不出短信中心号码的情况时,不允许用户进行设置,不允许用户发送短信:
        Dim OpenMsg As String = xSMS.Connect(Me.cbConnectPort.Text, CInt(Me.cbConnectBaudRate.Text))
        If OpenMsg = "" Then
            Me.StatusBarPanel1.Text = xSMS.GetMobileInfo

            If Me.StatusBarPanel1.Text = "未知手机 未知型号" Then
                Me.lblConnectState.Text = "未取得手机及型号"
            End If
            Me.lblConnectState.Text = String.Format("与{0}通迅成功!", Me.cbConnectPort.Text)
            Me.txtCenterNumber.Text = xSMS.GetSMSCenterNumber

            If Me.txtCenterNumber.Text.IndexOf("8613") = -1 Then
                Me.tSend.Enabled = False
            Else
                Me.tSend.Enabled = True
            End If
        Else
            Me.lblConnectState.Text = OpenMsg
            Me.tSend.Enabled = False
        End If

3、AT命令:

序号

AT命令

注释

可能的其他命令格式

1

AT

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值