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.
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. Куда вводить скрипт для отправки письма?
|