CftClub.ru
Клуб специалистов ЦФТ-Банк

Рассылка сообщений на e-mail
На страницу 1, 2, 3  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
belyansky
Участник со стажем


Вступление в Клуб: 22.10.2007
СообщениеЧт Фев 07, 2008 02:51   Рассылка сообщений на e-mail Ответить с цитатой
Полезность: Нет оценки
Добрый день, коллеги!
Я пытаюсь автоматизировать мониторинг некоторых процессов в ИБСО, таким образом чтобы при возникновении критичной ситуации отправлялось сообщение по электронной почте.
Подскажите, кто-нибудь сталкивался с подобными разработками?
Нашёл несколько операций и функций в ИБСО, которые "должны" отправлять сообщения, но ничего не заработало, хотя вроде и параметры забиваю верно... Может нужны какие-то дополнительные настройки для возможности отправки сообщений.
В общем жду ваших комментариев, заранее Спасибо!
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Фев 07, 2008 07:18   Re: Рассылка сообщений на e-mail Ответить с цитатой
Полезность: Нет оценки
belyansky пишет:
Добрый день, коллеги!
Я пытаюсь автоматизировать мониторинг некоторых процессов в ИБСО, таким образом чтобы при возникновении критичной ситуации отправлялось сообщение по электронной почте.
Подскажите, кто-нибудь сталкивался с подобными разработками?
Нашёл несколько операций и функций в ИБСО, которые "должны" отправлять сообщения, но ничего не заработало, хотя вроде и параметры забиваю верно... Может нужны какие-то дополнительные настройки для возможности отправки сообщений.
В общем жду ваших комментариев, заранее Спасибо!

у нас разработана система документооборота в ИБСО.. уведомления пользователям отправляютс яв том числе и по электронной почте
_________________
всегда есть как минимум 2 выхода
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеЧт Фев 07, 2008 09:19   Re: Рассылка сообщений на e-mail Ответить с цитатой
Полезность: 1
belyansky пишет:
Добрый день, коллеги!
Я пытаюсь автоматизировать мониторинг некоторых процессов в ИБСО, таким образом чтобы при возникновении критичной ситуации отправлялось сообщение по электронной почте.
Подскажите, кто-нибудь сталкивался с подобными разработками?
Нашёл несколько операций и функций в ИБСО, которые "должны" отправлять сообщения, но ничего не заработало, хотя вроде и параметры забиваю верно... Может нужны какие-то дополнительные настройки для возможности отправки сообщений.
В общем жду ваших комментариев, заранее Спасибо!

Может дело не в ЦФТшных операциях, а в настройке почтового сервера. Например SMTP требует авторизации или еще что-то типа того, попробуйте посмотреть в эту сторону.
_________________
I Lie About Everything.
belyansky
Участник со стажем


Вступление в Клуб: 22.10.2007
СообщениеЧт Фев 07, 2008 09:38    Ответить с цитатой
Полезность: Нет оценки
а как посылать сообщения через SMTP?
Igorka
Профи


Вступление в Клуб: 28.09.2007
СообщениеЧт Фев 07, 2008 10:10   Re: Рассылка сообщений на e-mail Ответить с цитатой
Полезность: Нет оценки
belyansky пишет:

Нашёл несколько операций и функций в ИБСО, которые "должны" отправлять сообщения

а в ИБСО есть штатный функционал по работе с электронной почтой?
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеЧт Фев 07, 2008 10:48   Re: Рассылка сообщений на e-mail Ответить с цитатой
Полезность: 1
Igorka пишет:

а в ИБСО есть штатный функционал по работе с электронной почтой?

Есть, только не в ИБСО, а в Oracle см. utl_smtp
_________________
I Lie About Everything.
belyansky
Участник со стажем


Вступление в Клуб: 22.10.2007
СообщениеПт Фев 08, 2008 02:14   Re: Рассылка сообщений на e-mail Ответить с цитатой
Полезность: Нет оценки
Igorka пишет:
belyansky пишет:

Нашёл несколько операций и функций в ИБСО, которые "должны" отправлять сообщения

а в ИБСО есть штатный функционал по работе с электронной почтой?


можно попробовать поискать операции с именами mail или sendmail, может что-то найдётся, у меня такие есть, но с их "работоспособностью" я не разобрался.
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Фев 08, 2008 07:43    Ответить с цитатой
Полезность: 4
Процедура отправки e-mail
Код:

procedure send_email(p_host in varchar2, p_port in number, p_from in varchar2, p_to in varchar2, p_subject in raw, p_data in raw) is
   v_connection utl_smtp.connection;
   v_from varchar2(64);
   v_orahost varchar2(64);
begin
   if p_port is null then
      p_port := 25;
   end if;
   if p_from is null then
      -- begin pl/sql
      select host_name into v_orahost from v$instance;
      -- end pl/sql
      v_from := 'From: "'||sys_context('USERENV','DB_NAME')||'.'||sys_context('USERENV','DB_DOMAIN')||' (ORACLE on '||v_orahost||')"';
   else
      v_from := 'From: "'||p_from||'"';
   end if;

   v_connection:=utl_smtp.open_connection(p_host,p_port);
   utl_smtp.helo(v_connection,'domain.ru');
   utl_smtp.mail(v_connection,'oracle-server@domain.ru');
   utl_smtp.rcpt(v_connection,p_to);
   utl_smtp.open_data(v_connection);
    utl_smtp.write_data(v_connection,v_from||utl_tcp.CRLF);
    utl_smtp.write_data(v_connection,'To: '||p_to||utl_tcp.CRLF);
    utl_smtp.write_data(v_connection,'MIME-Version: 1.0'||utl_tcp.CRLF);
    utl_smtp.write_data(v_connection,'Content-Type: text/plain; charset=iso-8859-5'||utl_tcp.CRLF);
    utl_smtp.write_data(v_connection,'Subject: ');
    utl_smtp.write_raw_data(v_connection,p_subject);
    utl_smtp.write_data(v_connection,utl_tcp.CRLF);
    utl_smtp.write_data(v_connection,utl_tcp.CRLF);
    utl_smtp.write_raw_data(v_connection,p_data);
    utl_smtp.close_data(v_connection);
    utl_smtp.quit(v_connection);
exception when others then
   pragma error('Невозможно отправить электронное письмо по следующим причинам: '||sqlerrm(sqlcode));
end;


Вызов процедуры

Код:

::[RUNTIME].[KOU_LIB].send_email(mailhost, mailport, 'Overdrafts', email, utl_raw.cast_to_raw(mailsubj), utl_raw.cast_to_raw(maildata));


Естественно, должен стоять пакет utl_smtp. В свойствах операции, из которой вызывается send_emal, должен стоять признак "Расширенный синтаксис".
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеСр Фев 13, 2008 14:40    Ответить с цитатой
Полезность: Нет оценки
Процедура работает, письма отправляет, все здорово!
Но почему-то русский текст выводится, как попало, только латинницей нормально... Crying or Very sad Что нужно сделать?
ssa774
Профи


Вступление в Клуб: 30.11.2007
СообщениеСр Фев 13, 2008 14:51    Ответить с цитатой
Полезность: Нет оценки
И еще не отправляет на два адреса сразу. Пробовала и через ";" и через "," - не работает...
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеСр Фев 13, 2008 16:18    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
Процедура работает, письма отправляет, все здорово!
Но почему-то русский текст выводится, как попало, только латинницей нормально... Crying or Very sad Что нужно сделать?

Надо поиграться с кодировкой, например:
Код:
utl_smtp.write_data(v_connection,'Content-Type: text/plain; charset="koi8-r"'||utl_tcp.CRLF);

_________________
I Lie About Everything.
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеСр Фев 13, 2008 16:34    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
Процедура работает, письма отправляет, все здорово!
Но почему-то русский текст выводится, как попало, только латинницей нормально... Crying or Very sad Что нужно сделать?

Мы только не смогли добиться кириллицы в теме письма, а в теле - все получилось.
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеСр Фев 13, 2008 16:36    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
И еще не отправляет на два адреса сразу. Пробовала и через ";" и через "," - не работает...

А в цикле не пробовали Wink
Например как-то так
Код:

   nb      integer;
   len      integer;
   cnt      integer;
begin
   cnt      := (length(p_from) - length(replace(p_from,';',''))) - 1;
   if cnt < 0 then cnt := 0; end if;
   for i in 1 .. cnt
     loop
        nb      := instr(p_from, ';', 1, i) + 1;
        len      := instr(p_from, ';', 1, i + 1) - nb;
        v_from   := substr(p_from, nb, len);
        Send_Letter(.....);
     end loop;
end;

_________________
I Lie About Everything.
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеСр Фев 13, 2008 16:37    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
И еще не отправляет на два адреса сразу. Пробовала и через ";" и через "," - не работает...

Мы смогли только написать свою функцию, которая разбирает строку адресатов и отправляет письмо каждому по-очереди.
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеЧт Фев 14, 2008 07:15    Ответить с цитатой
Полезность: Нет оценки
ssa774 пишет:
Процедура работает, письма отправляет, все здорово!
Но почему-то русский текст выводится, как попало, только латинницей нормально... Crying or Very sad Что нужно сделать?


Процедура отправляет письма в кодировке ораклового сервера. Если хотите отправить в другой кодировке, то необходимо преобразовать и сам текст в нужную кодировку.
Тему письма я тоже "ни асилил", да и времени особо не было разбираться.

Можно почитать документацию по протоколу SMTP, допилить процедуру.


Последний раз редактировалось: dnk_dz (Чт Фев 14, 2008 07:50), всего редактировалось 1 раз
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу 1, 2, 3  След.
Страница 1 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru