Рассылка сообщений на e-mail 
	  На страницу 1, 2, 3  След. 
	     | 
   
 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		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    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Процедура работает, письма отправляет, все здорово! 
 
Но почему-то русский текст выводится, как попало, только латинницей нормально...    Что нужно сделать? | 
			 
		  | 
	 
	
		  | 
	 
	
		ssa774 Профи
 
  Вступление в Клуб: 30.11.2007
  | 
		
			
				 Ср Фев 13, 2008 14:51    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| И еще не отправляет на два адреса сразу. Пробовала и через ";" и через ","  - не работает... | 
			 
		  | 
	 
	
		  | 
	 
	
		w00per Профи
 
  Вступление в Клуб: 17.10.2007
  | 
		
			
				 Ср Фев 13, 2008 16:18    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | ssa774 пишет: | 	 		  Процедура работает, письма отправляет, все здорово! 
 
Но почему-то русский текст выводится, как попало, только латинницей нормально...    Что нужно сделать? | 	  
 
Надо поиграться с кодировкой, например: 	  | Код: | 	 		  | 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 пишет: | 	 		  Процедура работает, письма отправляет, все здорово! 
 
Но почему-то русский текст выводится, как попало, только латинницей нормально...    Что нужно сделать? | 	  
 
Мы только не смогли добиться кириллицы в теме письма, а в теле - все получилось. | 
			 
		  | 
	 
	
		  | 
	 
	
		w00per Профи
 
  Вступление в Клуб: 17.10.2007
  | 
		
			
				 Ср Фев 13, 2008 16:36    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | ssa774 пишет: | 	 		  | И еще не отправляет на два адреса сразу. Пробовала и через ";" и через ","  - не работает... | 	  
 
А в цикле не пробовали    
 
Например как-то так
 
 	  | Код: | 	 		  
 
   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 пишет: | 	 		  Процедура работает, письма отправляет, все здорово! 
 
Но почему-то русский текст выводится, как попало, только латинницей нормально...    Что нужно сделать? | 	  
 
 
Процедура отправляет письма в кодировке ораклового сервера. Если хотите отправить в другой кодировке, то необходимо преобразовать и сам текст в нужную кодировку. 
 
Тему письма я тоже "ни асилил", да и времени особо не было разбираться. 
 
 
Можно почитать документацию по протоколу SMTP, допилить процедуру.
  Последний раз редактировалось: dnk_dz (Чт Фев 14, 2008 07:50), всего редактировалось 1 раз | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |