Beispiel #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);
        }