Эта статья рассказывает, как с помощью программы nhsms реализовать пересылку входящих смс на электронную почту – чтобы при поступлении смс на модем автоматически на адрес электронной почты приходило письмо с содержанием смс в теле письма и номером телефона — в теме письма.
Процесс пересылки смс
Пересылка смс основана на возможности программы nhsms запускать bat файлы при поступлении входящего смс сообщения и состоит из следующих шагов:
- в настройках программы nhsms задается запуск bat файла при поступлении входящего смс
- когда поступает смс, bat файл использует параметры принятого смс и формирует команду для отправки емейл
- для отправки электронного письма используется программа mailsend, она ранее рассматривалась в статье Отправить емейл из bat файла по SMTP
Настройка nhsms и bat файла
Подготовка текста сообщения
Программа nhsms передает в bat файл параметры смс через переменные среды:
- номер отправителя — %sms_sender%
- текст сообщения — %sms_messagetext%
Причем для текста из нескольких строк символы перевода строк преобразуются в \r\n
, чтобы весь текст можно было записать в одну строку.
Сохраняем текст в файл, имя файла формируется автоматически, чтобы избежать конфликтов:
echo %sms_messagetext% > "%fn%"
Затем раскрываем символы перевода строки и преобразуем в UTF-8:
nhrt.exe -spt:"\r\n" -et:"\r\n" -cp:auto,utf8 "%fn%"
В результате, файл %fn% будет содержать текст сообщения в несколько строк.
Отправка электронной почты
Командный файл отправляет письмо с помощью программы mailsend, для неё необходимо задать:
- параметры подключения к почтовому серверу
- адрес электронной почты получателя
- текст и тему письма
Подключение к серверу, имя и пароль, на примере mail.ru через SSL:
-smtp smtp.mail.ru -port 465 -ssl -auth-login -user login -pass password
Адрес получателя задается параметром -t.
Тема письма задается номером телефона:
-sub "%sms_sender%"
Текст письма задается содержимым файла %fn% в кодировке UTF-8:
-cs "utf-8" -mime-type "text/plain" -msg-body "%fn%"
Полный текст bat файла
Поскольку bat файл будет размещен в другом каталоге, чем nhsms.exe, запускаем программы mailsend и nhrt с указанием каталога %~dp0\
— это каталог, в котором находится bat файл.
В итоге, получается такой командный файл:
@echo off set fn=%~dp0\messagebody-%sms_sender%-%sms_referencenumber%.txt echo %sms_messagetext% > "%fn%" "%~dp0\nhrt.exe" -spt:"\r\n" -et:"\r\n" -cp:auto,utf8 "%fn%" "%~dp0\mailsend1.19.exe" -t to@mail.ru ^ -cs "utf-8" -mime-type "text/plain" -msg-body "%fn%" ^ -sub "%sms_sender%" -smtp smtp.mail.ru -port 465 ^ -f sender@mail.ru -name "modem" ^ -ssl -auth-login -user smtp_login -pass smtp_password" del %fn%
Настройка запуска bat файлв
Распаковываем ZIP архив файлы в папку Scripts
рядом с nhsms.exe, то есть файлы должны оказаться в Scripts\sms2email
:
- sms2email.cmd — сам командный файл
- mailsend1.19.exe — текущая версия программы mailsend
- nhrt.exe — текущая версия программы nhrt
В sms2email.cmd
задаем реальные параметры подключения к серверу и адреса электронной почты.
Добавляем запуск bat файла в конфигурацию программы nhsms, на вкладке Входящие сообщения — в список Команды обработки входящих сообщений.
cmd.exe /u /c scripts\sms2email\sms2email.cmd
Файлы для скачивания
Ссылка для скачивания с Яндекс.Диска
Здравствуйте. Подскажите , с какими модемами будет работать корректно Ваша программа ?
Здравствуйте, обширного списка не ведется, можно ориентироваться на отзывы пользователей форуме, подробнее в вопросах и ответах С какими моделями модемов (телефонов) работает программа nhsms?