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

Процесс пересылки смс

Пересылка смс основана на возможности программы nhsms запускать bat файлы при поступлении входящего смс сообщения и состоит из следующих шагов:

  • в настройках программы nhsms задается запуск bat файла при поступлении входящего смс
  • когда поступает смс, bat файл использует параметры принятого смс и формирует команду для отправки емейл
  • для отправки электронного письма используется программа mailsend, она ранее рассматривалась в статье Отправить емейл из bat файла по SMTP

Настройка nhsms и bat файла

Подготовка текста сообщения

Программа nhsms передает в bat файл параметры смс через переменные среды:

Причем для текста из нескольких строк символы перевода строк преобразуются в \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 с командами для входящих смс

Файлы для скачивания

Ссылка для скачивания с Яндекс.Диска

Пересылка входящих смс на почту
Метки:     

2 мыслей о “Пересылка входящих смс на почту

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *