Отправка смс на 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты