Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }