Отправка смс на C#
Всегда интересно создать программу, управляющую внешним подключаемым устройством. В качестве последнего сегодня у нас будет выступать usb модем huawei от мтс. Мы заставим его отправлять сообщения - с помощью программы Microsoft Visual C# 2010 Express и языка C#. Приложение получилось несложное и понятное, поэтому комментариев будет самый минимум.
Итак, непосредственно за отправку отвечает метод sendS, принимающий качестве аргументов две строки - текст смс и номер телефона получателя. В строке 42 заставляем модем прислушиваться к нам, в строке номер 44 - ставим текстовый режим отправки смс. Строка 54 отвечает за добавление номера телефона получателя, а само сообщение - строка 46. В строке 80 могут быть и другие значения - 4800, 9600, 28800 или 56000; 81 - может быть 8 и 9; таймауты (86-87) - еще можно поэкспериментировать с 1000 или 5000, а вот больше уже не стоит. В строке 89 устанавливаем кодировку, а в 91 - номер порта данный номер находим в диспетчере устройств - соответствующий нашему модему.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO.Ports; namespace sms { class Program { static SerialPort pt; static void Main(string[] args) { pt = new SerialPort(); Console.WriteLine("Отправляем сообщение."); OpP(); bool result; result = sendS("Microsoft Visual C# 2010 Express", "+79213332211"); if (result == true) { Console.WriteLine("Сообщение отправлено успешно"); } else { Console.WriteLine("Не удалось отправить смс"); } Console.ReadLine(); pt.Close(); } private static bool sendS(string tsms, string tel) { if (!pt.IsOpen) return false; try { System.Threading.Thread.Sleep(500); pt.WriteLine("AT\r\n"); System.Threading.Thread.Sleep(500); pt.Write("AT+CMGF=1\r\n"); System.Threading.Thread.Sleep(500); } catch { return false; } try { pt.Write("AT+CMGS=\"" + tel + "\"" + "\r\n"); System.Threading.Thread.Sleep(500); pt.Write(tsms + char.ConvertFromUtf32(26) + "\r\n"); System.Threading.Thread.Sleep(500); } catch { return false; } try { string recievedData; recievedData = pt.ReadExisting(); if (recievedData.Contains("ERROR")) { return false; } } catch { } return true; } private static void OpP() { pt.BaudRate = 2400; pt.DataBits = 7; pt.StopBits = StopBits.One; pt.Parity = Parity.Odd; pt.ReadTimeout = 2500; pt.WriteTimeout = 2500; pt.Encoding = Encoding.GetEncoding("windows-1251"); pt.PortName = "COM3"; if (pt.IsOpen) pt.Close(); try { pt.Open(); } catch { } } } }Небольшое дополнение. Программка отказывалась работать, пока модем был подключен к сети (работал интернет). А вот при отключенном интернете - все было нормально. Причем смс отправлялись независимо от того, был ли запущен Коннект Менеджер или нет.
Вот так просто можно отправить смс с помощью C# и usb модема. Если у вас стались какие-либо вопросы или необходима помощь/программа по/на си шарп, то вы всегда можете написать на up777up@yandex.ru - за небольшое вознаграждение вам будет оказана быстрая помощь.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.