Задался вопросом отправки почты и SMS из супервайзора, перерыл кучу вариантов, оказалось что проще
некуда. Естественно компьютер со скадой должен быть подключен к интернету.
- Идём на бесплатный почтовый сервис, например
http://www.mail.ru/ можно и на
корпоративный, если имеется. Mail.ru правда
после отправки десятка писем подряд, выдаёт
сообщение: You have exceeded message sending limit, and i
will not accept any messages from you within 15 minutes
- Создаём учётную запись, например cx-supervisor@mail.ru с паролем qwerty
- Настраиваем Outlook Express для работы с почтовым ящиком, почта должно
свободно работать, никакие настройки системы, брандмауэры и прочее в сети не
должны блокировать ящик и естественно
microsoft.com. Если не получается, напрягаем сисадмина.
Outlook Express нужен только для проверки настроек компа и сетки.
- Далее создаём файл VB скрипта, например
email.vbs, внутри текст:
Код:
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "cx-supervisor@mail.ru"
objEmail.To = "Получатель@mail.ru"
objEmail.Subject = "Тест"
objEmail.Textbody = "проверка связи"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "cx-supervisor@mail.ru"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "qwerty"
objEmail.Configuration.Fields.Update
objEmail.Send
- objEmail.To = "Получатель@mail.ru" естественно тот кому письмо
предназначается, если адресатов несколько, перечисляем всех через запятую
- .........configuration/sendusername и ...........configuration/sendpassword
необходимость этих параметров зависит от того кто предоставляет услугу
почтового ящика, mail.ru например защищается от рассылки спама с чужих
адресов, и для отправки почты требуется авторизация, на некоторых почтовиках
будет работать и без этих строк, Без этих строк будет работать если
предварительно запустить Outlook Express и проверить почту. Я не силён в
интернете, могу и ошибаться в выводах.
- objEmail.Subject = "Тест" Тема письма
- objEmail.Textbody = "проверка связи" текст письма, можно
прикрепить ещё и какие-либо файлы, описывать как это делается нет никакого
желания, в инете достаточно описаний на эту тему, достаточно поискать по
кусочку текста из приведённого скрипта.
Когда убедимся что наш скрипт работает и отправляет почту, Приладить
его к Супервайзору не составит труда, скрипт нормально работает внутри
Супервайзора с использованием текстовых точек там где необходимо. Не стоит
запускать несколько скриптов подряд, на выполнение скрипта требуется время,
нужен какой-то интервал между запусками.
Кстати мыло и пароль в скрипте настоящие (не знаю как долго проживёт этот
ящик), подставте свой адрес в свойство objEmail.To и протестируйте, у меня
работает без проблем.
Теперь о SMS, сейчас почти все операторы
связи предоставляют услугу пересылки SMS с почтового ящика абонента на телефон.
Чтобы включить возможность приема сообщений с электронной почты на телефон сети БИЛАЙН GSM
(и узнать адрес своего телефона), нужно сделать звонок по бесплатному номеру
06849909
Вам придет SMS-сообщение, в котором будет указан
присвоенный вашему телефону адрес электронный почты, что-то вроде Вашномер@sms.beemail.ru. Сообщения, отправленные по электронной почте на этот
адрес, будут приходить на ваш телефон в виде SMS. Слишком длинные сообщения будут разбиты на несколько SMS. В течение некоторого времени после получения
первого SMS вы сможете запросить следующее при помощи буквы, указанной в конце сообщения.
Идею я позаимствовал у программы PrevedSMS,
(просто первая попалась, хотя в инете полно инфы на тему отправки SMS через почту) Вы можете скачать эту программу
и в её хелпе найти необходимого Вам оператора и инструкцию по подключению услуги, можно правда поискать и на сайте своего оператора. Пробовал отправлять
SMS с помощью скрипта себе и своим сослуживцам, работает, а на почтовый ящик отправителя приходит сообщение от оператора о доставке SMS, т.е. фактически
получение сообщения фиксируется. Но вот проблема с временем доставки сообщения, от нескольких секунд, до нескольких часов, в случае проблем у оператора.
SMS несложно отправлять через GSM модем или через обычный мобильник подключенный к компьютеру как модем с помощью
AT команд модема. Для экспериментов я использовал свой мобильник, моторола RAZR V3i, удобен тем что подключается к
USB порту обычным стандартным кабелем, и ещё и подзаряжается через этот кабель. После установки дров, мобильник числится в системе как Motorola USB Modem
на виртуальном СОМ порту. Супервайзер поддерживает прямую работу с СОМ портом, и управлять модемом из скрипта не
составит никакой сложности, правда я так и не смог получить в супервайзор ответы модема... Набросал простенький пример под свой
телефон.
Чтобы проверить как работает телефон нужно воспользоваться какой либо терминальной прогой.
<CR> и подобное это ASCII символы с кодом менее 20. для других телефонов команды могут немного различатся.
Отправляем на модем команды:
- ATE0<CR> наверно это что-то связанное
с инициализацией модема. Должны получить ответ <CR><LF>OK<CR><LF>
- AT+CMGF=1 переключение в текстовой
режим.
- AT+CMGS="+79037328379" команда с номером
телефона кому отправляем SMS.
- Privet
текст сообщения, можно разбить на несколько строк.
- <SUB> Команда на отправку
сообщения #1A, через некоторое время получим
сообщение о доставке SMS
<CR><LF>+CMGS: 47<CR><LF><CR><LF>OK<CR><LF>
Чтобы отправить следующее сообщение достаточно повторить шаги 3, 4, 5.
С отправкой сообщения на русском языке сложнее, и размер сообщения сильно
ограничен.
- ATE0<CR>
- AT+CMGF=1 переключение в текстовой
режим.
- AT+CSCS="UCS2" переключение в юникод.
- AT+CMGS="+79037328379" номер
телефона.
- 041F04400438043204350442002
это текст сообщения, соответствующий слову "Привет".
- <SUB> Команда на отправку
сообщения #1A,