EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Отправка email из OpenSCADA


Author Message
Written on: 08. 06. 2011 [22:36]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Опишу наиболее простой способ отправки электронной почты с вложенными файлами из OpenSCADA. Есть много и других способов, но они сопряжены со сложностями настройки системы, что многим пользователям нежелательно. Возможно кому-то пригодится для периодической отправки сгенерированных ранее файлов, отчётов и т.д.

Есть хорошая программка sendemail для этого:
http://caspian.dotconf.net/menu/Software/SendEmail/

В Debian/Ubuntu устанавливается sendemail просто:
aptitude install sendemail

Теперь программой можно пользоваться из командной строки:
sendemail --help

Следующий код отправляет электронную почту из ява-программы OpenSCADA:

using Special.FLibSYS;
sender="sender@yandex.ru"; //отправитель
receiver="receiver@yandex.ru"; //получатель
topic="OpenSCADA"; //тема
message="Это сообщение отправлено автоматически. Отвечать на него не нужно."; //сообщение
server="smtp.yandex.ru:25"; //сервер
files="/var/spool/openscada/DATA/MainSt.db /etc/oscada.xml"; //прикрепляемые файлы
username="sender"; //Имя пользователя (отправитель)
password="********"; //Пароль (отправитель)
out=sysCall("sendemail -f "+sender+" -t "+receiver+" -u "+topic+" -m "+message+" -s "+server+" -a "+files+" -xu "+username+" -xp "+password);

Использованные переменные могут быть заданы как входные параметры функции (вход-строка), а out - как параметр-возврат (строка).

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 22. 03. 2013 [13:43]
legend
Oleg N
registered since: 13.04.2012
Posts: 63
Алмаз, спасибо за такую ценную информацию. Она до сих пор актуальна и программа работает.
Но хочу добавить свои пять копеек.
Программа по умолчанию отправляет текст сообщения в формате iso-8859-1 и не все почтовые клиенты преобразуют сообщение в читаемый вид.
Поэтому для того, чтобы текст отправлялся в UTF-8, я изменил переменную out.
JAVASCRIPT
out=sysCall("sendemail -f "+sender+" -t "+receiver+" -u "+topic+" -m "+message+" -s "+server+" -xu "+username+" -xp "+password+" -o message-charset=UTF-8");
Written on: 29. 03. 2013 [07:52]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Скорее всего, программа отправляет в той кодировке, на которую настроена консоль (терминал). В Debian/Ubuntu консоль локализуется с возможностью смены кодировки двумя командами. При исполнении последней команды выбираем английский и русский языки в кодировке UTF-8 и по умолчанию ставим русский.
sudo apt-get install console-cyrillic
sudo dpkg-reconfigure locales

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 23. 05. 2013 [15:49]
andrelek
Андрей Полевой
registered since: 13.12.2008
Posts: 210
Здравствуйте!
У меня отправка почты sendemail-ом со скады возвращает код ошибки 32512, если из скады выполнить скрипт для отправки почты sendemail-ом то код ошибки 127.
Из консоли и скрипт и команда работают корректно под разными пользователями и в рабочей директории исполняемого проэкта в том числе.
У вас возникали такие проблемы?
Written on: 24. 05. 2013 [07:02]
almaz
Almaz Karimov
Contributor
Topic creator
registered since: 25.09.2008
Posts: 516
Не сталкивался. Сразу работало всегда. Может синтаксическая ошибка попала в программу? Даже один некорректный символ может вызвать ошибку. Пробуйте скопировать программу с форума один в один, на другом компьютере, системе, скаде, если не пойдёт...

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 24. 05. 2013 [08:01]
andrelek
Андрей Полевой
registered since: 13.12.2008
Posts: 210
Спасибо! Попытаюсь на другой машине выполнить отправку. Синтаксической ошибки нет, т.к. из консоли работает нормально, а текст команды сформирован в скаде и копи-пастом вставлен в консоль.

[This article was edited 1 times, at last 24.05.2013 at 08:04.]
Written on: 27. 05. 2013 [11:08]
andrelek
Андрей Полевой
registered since: 13.12.2008
Posts: 210
Проблема решилась указанием поного пути к исполняемому файлу
out=sysCall("/полный путь/sendemail.....................
Если нужно почтовое сообщение получать в разных строках то вместо знака перевод строки <\n> нужно вставлять знак перевод каретки <\r>
Written on: 15. 01. 2014 [08:03]
Rosgard
Андрей Ткачев
registered since: 05.12.2013
Posts: 26
А как сделать, чтобы сообщение отправлялось только при изменении параметра(включение, отключение и тд)?
Например, чтобы было так - pVal>"10" отправляется сообщение с текстом один раз и так до следующего события ничего не отправляется.

[This article was edited 1 times, at last 15.01.2014 at 08:50.]
Written on: 16. 01. 2014 [10:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"Rosgard" wrote:

А как сделать, чтобы сообщение отправлялось только при изменении параметра(включение, отключение и тд)?
Например, чтобы было так - pVal>"10" отправляется сообщение с текстом один раз и так до следующего события ничего не отправляется.

Запоминать предыдущее значение и по смене отправлять, естественно.

Learn, learn and learn better than work, work and work.
Written on: 07. 10. 2016 [16:02]
Olexanderrr
Olexander Knestyapin
registered since: 08.08.2016
Posts: 3
Здравствуйте. Хочу сделать отправку email, на примере как описал Алмаз. Не понимаю как это сделать. Установил программу SendEmail. Куда вводить скрипт для отправки письма?



8432