前段时间因为公司要对会员群发短信,因为来不及开发,买了二郎腿软件短信群发软件(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 |