Oracle - Envío de mails por Oracle

 
Vista:

Envío de mails por Oracle

Publicado por Richard Alexis (3 intervenciones) el 23/11/2009 20:04:54
Buenas tardes amigos del foro, como están, te escribo para preguntarte que necesito para poder enviar mails desde un procedimiento en Oracle 11g.

He encontrado varios ejemplos de comoe hacer un procedimiento para poder hacerlo, pero me devuleven todos este error:

ORA-24247: acceso de red denegado por la lista de control de acceso (ACL)
ORA-06512: en "SYS.UTL_TCP", línea 17
ORA-06512: en "SYS.UTL_TCP", línea 246
ORA-06512: en "SYS.UTL_SMTP", línea 115
ORA-06512: en "SYS.UTL_SMTP", línea 138
ORA-06512: en "CONSORCIO.PK_UTILITARIOS", línea 327

Asumo que tengo que ejecutar algunos procedimientos del sistema o instalar algo, pero no he encontrado información concreta al respecto.

Esa es mi duda en si.

Espero puedan ayudarme amigos y gracias por su gentil ayuda.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Envío de mails por Oracle

Publicado por JORGE SANCHEZ (186 intervenciones) el 25/11/2009 18:21:29
Espero te sirva:

Esta linea es importante, si tienes servidor de salida todo es sencillo.
A parte CONCORCIO.PK_UTILITARIOS ... manda error en la linea 327, la exception se va propagando, se todos modos te mando un procedure

c := utl_smtp.open_connection('mail.mx.empresa'); -- << servidor de salida

CREATE OR REPLACE procedure cic_send_mail (
porigen varchar2,
pdestino varchar2,
psubject varchar2,
pmensaje varchar2
) is
c utl_smtp.connection;
vsender varchar2(500);
vrecipient varchar2(500);

procedure send_header(name in varchar2, header in varchar2) as
begin
utl_smtp.write_data(c, name || ': ' || header || utl_tcp.crlf);
end;

begin
vsender := substr(porigen ,1,instr(porigen ,'@',1) -1);
vrecipient := substr(pdestino1,1,instr(pdestino1,'@',1) -1);
c := utl_smtp.open_connection('mail.mx.empresa'); -- << servidor de salida
utl_smtp.helo(c, 'empresa.com.mx');
utl_smtp.mail(c, porigen );
utl_smtp.rcpt(c, pdestino1);
utl_smtp.open_data(c);
send_header('From', '"'||vsender ||'"<'||porigen ||'>');
send_header('To' , '"'||vrecipient||'"<'||pdestino1||'>');
send_header('subject', psubject);
utl_smtp.write_data(c, utl_tcp.crlf || pmensaje );
utl_smtp.close_data(c);
utl_smtp.quit(c);
exception
when utl_smtp.transient_error or utl_smtp.permanent_error then
begin
utl_smtp.quit(c);
exception
when utl_smtp.transient_error or utl_smtp.permanent_error then
null; -- when the smtp server is down or unavailable, we don't have
-- a connection to the server. the quit call will raise an
-- exception that we can ignore.
end;
raise_application_error(-20000,
'failed to send mail due to the following error: ' || sqlerrm);
end;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar