public bool Send(string phone, string sms, SmsFormat format) { lock (lockItem) { MakeSureConnection(); sms = sms.Replace("\r\n", ""); string[] contentSet = CutMessageFromContent(sms); if (ChinaMobile && contentSet.Length > 1) { return(SendMobile(phone, sms, format)); } for (int i = 0; i < contentSet.Length; i++) { string content = contentSet[i]; var messageFromat = new SetSmsFromatCommand(format); AbstractCommand resultCommand = Send(messageFromat); if (!resultCommand.Success) { return(false); } var cmgsCommand = new CmgsCommand(); if (format == SmsFormat.Pdu) { var info = new SmsInfo(ServiceCenterNumber, phone, content); int smsLen = 0; content = info.EncodingSMS(out smsLen); cmgsCommand.Argument = string.Format(smsLen.ToString("D2")); } else { cmgsCommand.Argument = phone; } resultCommand = Send(cmgsCommand); if (!resultCommand.Success) { return(false); } var directCommand = new SendContent { Content = content }; resultCommand = Send(directCommand); if (!resultCommand.Success) { return(false); } Thread.Sleep(1000); } Thread.Sleep(1000); } return(true); }
private bool SendMobile(string phone, string sms, SmsFormat format) { int rem = 0; int count = Math.DivRem(sms.Length, maxSmsLength, out rem); if (rem > 0) { count++; } var messageFromat = new SetSmsFromatCommand(format); AbstractCommand resultCommand = Send(messageFromat); this._log.Debug("Set format command is " + resultCommand.Success); if (!resultCommand.Success) { return(false); } sms = PDUdecoding.EncodingOther(sms); this._log.Debug("send long sms's length " + count); for (int i = 0; i < count; i++) { _log.Info("Send the " + i); string length; string sendMessage = PDUdecoding.EncodingSMS(ServiceCenterNumber, phone, count, i + 1, sms, out length); var cmgs = new CmgsCommand { Argument = length }; Send(cmgs); var directCommand = new SendContent { Content = sendMessage }; var s = Send(directCommand); } return(true); }