Программа для отсылки SMS-сообщений (в том числе из командной строки)

Случился тут у меня неприятный случай: в результате кратковременного обрыва питания в серверной моей конторы отключились все кондиционеры. Неприятность произошла в субботу, в результате чего, к утру понедельника в конторе не осталось ни одного сервера в “своем уме”. А температура в серверной поднялась до 45 — 50 градусов (при +12 на улице). В общем (слава HP!), все серверы выжили, инцидент исчерпан, но такая ситуация подвигла меня на некоторые действия.

А именно: решил я замутить систему оповещения себя любимого обо всех неприятностях, произошедших в конторе в мое отсутствие. Звеном для построения этой системы стала программка, которую я решил выложить здесь: на случай, что может кому-нибудь пригодится.

Программка отправляет SMS-сообщение через любой подключенный к компьютеру GSM-модем или сотовый телефон. (Я писал ее имея в наличии 3G-модем HUAWEI E1550 с оператором МТС, но затем проверял на сотовом телефоне Sony Ericsson C510i с оператором Теле2, так что должна работать и с другими устройствами, поскольку протоколы стандартные почти для всех устройств).

Отправлять сообщения можно как вручную, вводя номер и текст сообщения прямо в окне программы, так и используя параметры командной строки, а именно это и подходит для автоматизированной работы моей системы оповещения. Именно так я и использую ее в своих скриптах.

Итак, представляю вашему вниманию программу SMSSender. Программа написана на C#, поэтому для работы необходима предустановленная платформа Microsoft .Net Framework не ниже версии 2.0.

Настройка программы

Настройка программы очень проста.

1. Подключаем к компьютеру GSM-модем или сотовый телефон, ждем, пока установятся драйверы, если они небыли установлены.

2. Запускаем программу SMSSender, нажимаем кнопку с троеточием возле поля «Модем»

smssender1

3. В открывшемся окне выбираем нужный нам модем (на случай, если их будет несколько)

smssender2

4. Далее, заходим на закладку «Настройки» и нажимаем кнопку «Тест модема». Если все нормально, то появится окно «Тест прошел успешно», с текстом ответа модема. В некоторых случаях придется порулить настройками порта, но обычно это лишнее.

smssender3

5. После этого, чтобы настройки сохранились, необходимо нажать кнопку «Сохранить и закрыть». При желании можно проверить работу программы, переключившись на закладку «Отправить СМС», введя там номер телефона абонента, текст сообщения и нажав кнопку «Отправить SMS». В случае успешной отправки появится окно «Сообщение отправлено успешно».

После настройки программы и нажатия кнопки «Сохранить и закрыть», окно программы закроется, а настройки будут сохранены. Теперь можно приступать к использованию. Внимание! Закрытие окна программы кнопкой-крестиком не сохраняет настройки!

Использование программы

Ручной режим отправки прост: запустить программу без параметров, ввести номер телефона, сообщение, нажать кнопку «Отправить SMS» и все.

Второй режим работы программы – с параметрами командной строки. В данном режиме тоже нет ничего сложного: указываем программе параметры и наслаждаемся. Окно программы при этом не появляется, она сама закрывается после окончания работы.

Допустимые параметры командной строки:

-n”номер телефона” Номер телефона абонента в международном формате, например +79107899999. Кавычки обязательны. Данный параметр может быть опущен, в этом случае SMS будет отправлена на последний использованный номер
-m”номер телефона” Текст сообщения. Максимальная длина сообщения 160 символов для сообщений латинскими буквами и 70 символов для сообщений на русском языке. Длинные сообщения обрезаются. Кавычки обязательны.
-f Отправлять сообщение как Flash-SMS. В этом случае SMS приходит на телефон получателя и сразу же отображается на экране.
-t Отправлять сообщение в текстовом режиме. Это упрощенный протокол отправки сообщения. Возможен только для сообщений латинскими буквами. Не поддерживается некоторыми устройствами. В общем, этот параметр обычно не применяется
-l Вести лог в текстовом файле. Файл появляется в папке с программой и будет называться «log.txt»
-l”Путь и имя файла” Вести лог в указанном текстовом файле. Кавычки обязательны.
-? Показать подсказку

Вместо символа «–» можно использовать символ «/»

Вот несколько примеров:

smssender.exe -n”+79107899999” –m”Привет, дружище!” –l

smssender.exe /m”Привет!”

В общем, все просто.

Done

Еще раз повторюсь: программа написана на C#, поэтому для работы необходима предустановленная платформа Microsoft .Net Framework не ниже версии 2.0

В общем, программа проста как 3 копейки. Может, кому пригодится.

Функционал, при желании, можно расширить, если кому-то понадобится – пишите в комментариях.

Обновлено 19.08.2011

Выложил вторую версию программы.  Главное новшество: программа теперь может отправлять длинные SMS (больше 160 символов латынью или 70 символов кириллицей). Кроме того, добавлена возможность вместо имени модема указать непосредственно com-порт, на котором висит модем. На тот случай, если у кого-то программа сама найти модем не сможет.

Enjoy It!

СКАЧАТЬ ПРОГРАММУ:

Скачать

Исходный код

Для тех, кто по каким-либо причинам не может разобраться с данной темой, я выложил исходные коды программы SMSSender. Там реализована отправка длинных сообщений, и код, формирующий PDU-текст достаточно понятно комментирован.  Смотрите раздел «Исходные коды»

Поделиться с друзьями:
  • Добавить ВКонтакте заметку об этой странице
  • Одноклассники
  • Facebook
  • В закладки Google
  • Мой Мир
  • Twitter
  • LiveJournal
  • Яндекс.Закладки
  • LinkedIn
  • Reddit
  • StumbleUpon
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru

Comments

  1. Добрый день!

    У меня проблема с отчетом. Появляется сообщение «произошла ошибка при приеме ответа на команду AT+CPMS=»SM": ERROR.

    Как можно сделать так, чтобы был отчет о доставке? Свяжитесь со мной пожалуйста по мылу.

  2. А возможность есть может указать список номеров, для массовой рассылки? Например через запятую? Или может файл со списком?

  3. доброго времени суток. А можно ли этой программой рассылку производить от определенного имени, чтобы получатели СМС видели не номер телефона модема, с которого идет рассылка, а, например, «PupkinCo»?

  4. Добрый день! Прошу помощи. Программа модем видит, отсылается первая смс всё ок. Далее, отправки смс не происходит. прога долго думает, перезапускает модем и выдает ошибку на команду AT0. Если модем ручками достать и опять вставить в USB то всё по кругу описанному выше, отсылается только одна смс.

  5. Привет! Использую эту программу для отправки смс чека из 1с, через командную строку. Возник вопрос, можно ли получить ответ об удачной отправке сообщения, как это делается в интерфейсе программы?

    1. Нашла все Ваши статьи об отправке SMS, в том числе длинных. Так что необходимость в исходных кодах, в общем-то, отпала. Огромное спасибо, что так масштабно потрудились с изложением непростой информации!

  6. Добрый день, интересует расширение функционала программы, каким образом можно с Вами связаться?

  7. Отличная программа, использую ее при отправки смс из 1с8, единственно что бы хотелось в ней реализовать это код возвращаемого действия т.е. что бы 1с могла понять отправлено сообщение или возникли проблемы

  8. Добрый день!

    Отправляю из командной строки, ставлю параметр -f, но приходит обычное сообщение. Через программу тоже Flash-сообщение не приходит. Приходит обычное. И ничего не появляется в закладке отчеты.

    1. Flash-сообщения поддерживаются не всеми телефонами. Кроме того, они могут быть запрещены в настройках. Это слишком спаммерская технология.

      1. Телефон гарантировано поддерживает Flash-сообщения. Из другой программы получает без проблем. Например GSM modem controller. Также не работает отчет о доставке. Ничего не появляется в закладке отчеты при установленной галочке — Запрашивать отчет о доставке.

      2. И еще вопрос как из командной строки отправлять СМС через определенный модем или COM порт, если в системе их несколько? А то отправка идет только через первый в системе. Файл конфигурации не помогает.

        1. Что-то у вас не то. Сложно сказать что это не имея возможности посмотреть на живую систему и без отладки. Попробуйте другую систему или другой телефон/модем

          1. И еще вопрос как из командной строки отправлять СМС через определенный модем или COM порт, если в системе их несколько? А то отправка идет только через первый в системе. Файл конфигурации не помогает.

          2. Я очень давно уже не пользовался этой программой, несколько все изменилось.

            В настройках указывается модем а не порт, на сколько я помню. Наименование модема. По нему программа ищет нужный, кажется.

          3. Подскажите пожалуйста нет ли возможности из командной строки отправлять СМС через определенный COM порт? Просто в системе несколько модемов и они соответственно висят на разных портах. А программа из командной строки отправляет только по одному ком-порту. файл конфигурации не помогает.

          4. Боюсь, выбрать именно порт нельзя. Можно выбрать только название модема, а порт ищется уже исходя из названия.

  9. Добрый день!

    Спасибо огромное за программу, очень полезна и проста в использовании.

    Возникла необходимость добавить отсылку USSD запросов, приобрел исходники (даже заработало), но хотелось бы исходники последней версии, у меня программа версии 3.0, а исходники 2.0...

    Скинте, пожалуйста, обновленные исходники.

  10. Можете написать с какими именно моделями модемов может работать программа, а то COM порт не на всех модемах есть. Уже 5 модемов воткнул, а они все в системе как сетевые карты определяются.

  11. помогите пожалуйста. не могу понять. пытаюсь через cmd написать команду «smssender.exe -n”+79107899999” –m”Привет, дружище!” –l» , но выдается ошибка -неизвестный аргумент. пробовал через bat-ник, тоже самое. что я делаю не так?

    1. Добрый день! Не копируйте строку запуска с сайта. Введите ее целиком руками. Так же обратите внимание на кавычки — должны быть обычные двойные кавычки и на дефис — должен быть знак «минус», а не длинное тире. При публикации текста на сайте движок сайта заменяет эти символы другими, похожими, но не настоящими. В вашем тексте я четко вижу, что перед аргументом m стоит длинное тире, а не минус.

      В общем, не поленитесь, введите все руками.

Добавить комментарий

Ваш e-mail не будет опубликован.