Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Oracle PL/SQL enviar correo con adjuntos

Estas en el tema de Oracle PL/SQL enviar correo con adjuntos en el foro de Bases de Datos General en Foros del Web. Hola a todos; Utilizo procedimientos almacenados de Oracle en PL/SQL y tengo un procedimiento para enviar correos que funciona bien cuando envio texto plano, pero ...
  #1 (permalink)  
Antiguo 07/11/2003, 06:22
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 8 meses
Puntos: 2
Oracle PL/SQL enviar correo con adjuntos

Hola a todos;
Utilizo procedimientos almacenados de Oracle en PL/SQL y tengo un procedimiento para enviar correos que funciona bien cuando envio texto plano, pero ahora además se quiere que pueda adjuntar ficheros a los correos. ¿alguien conoce como se puede hacer? Los ficheros que envio los cargo en una tabla de la base de datos en formato BLOB, supongo que de alguna forma los tengo que leer de allí y adjuntarlos al correo, ¿¿¿pero como???

Aqui les pongo el código de mi función SEND_MAIL:

Código:
PROCEDURE AU_GN_SEND_MAIL(sender IN VARCHAR2,
		  	   recipient IN VARCHAR2,
			   ccrecipient IN VARCHAR2,
			   subject IN VARCHAR2,
			   message IN VARCHAR2,
         blnResultado IN OUT BOOLEAN) IS

crlf VARCHAR2(2):= UTL_TCP.CRLF;
connection utl_smtp.connection;
mailhost VARCHAR2(30) := 'aqui ip de server;
header VARCHAR2(1000);
arrayRECIPIENTS AU_GN_GENERAL.array_VARCHAR2;
arrayCCRECIPIENTS AU_GN_GENERAL.array_VARCHAR2;
i NUMBER:=0;
j NUMBER:=0;
v_recipient VARCHAR2(100) := '';
v_ccrecipient VARCHAR2(100) := '';
hd_recipient VARCHAR2(1000) := '';
hd_ccrecipient VARCHAR2(1000) := '';

BEGIN

-- Start the connection.

connection := utl_smtp.open_connection(mailhost,25);

hd_recipient := REPLACE(recipient, '|', ',');
hd_ccrecipient := REPLACE(ccrecipient, '|', ',');

header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
'From: '||sender||''||crlf||
'Subject: '||subject||crlf||
'To: '||hd_recipient||crlf||
'CC: '||hd_ccrecipient;

-- Handshake with the SMTP server

utl_smtp.helo(connection, mailhost);
utl_smtp.mail(connection, sender);

IF recipient IS NOT NULL THEN
   arrayRECIPIENTS := AU_GN_GENERAL.AU_GN_OBTENER_ARRAY_CHAR(recipient, '|');
   FOR i IN arrayRECIPIENTS.FIRST..arrayRECIPIENTS.LAST LOOP
	   v_recipient := arrayRECIPIENTS(i);
	   IF (v_recipient IS NOT NULL OR v_recipient != '') THEN
		  utl_smtp.rcpt(connection, v_recipient);
       END IF;
   END LOOP;
END IF;

IF ccrecipient IS NOT NULL THEN
   arrayCCRECIPIENTS := AU_GN_GENERAL.AU_GN_OBTENER_ARRAY_CHAR(ccrecipient, '|');
   FOR j IN arrayCCRECIPIENTS.FIRST..arrayCCRECIPIENTS.LAST LOOP
	   v_ccrecipient := arrayCCRECIPIENTS(j);
	   IF (v_ccrecipient IS NOT NULL OR v_ccrecipient != '') THEN
		  utl_smtp.rcpt(connection, v_ccrecipient);
	   END IF;
   END LOOP;
END IF;

IF recipient IS NULL AND ccrecipient IS NULL THEN
   dbms_output.put_line(' Mail NO sent.');
   blnResultado := false;
ELSE
   utl_smtp.open_data(connection);
   -- Write the header
   utl_smtp.write_data(connection, header);
   utl_smtp.write_data(connection, crlf ||message);
   utl_smtp.close_data(connection);
   dbms_output.put_line(' Mail sent.');   
   blnResultado := true;
END IF;
utl_smtp.quit(connection);

EXCEPTION

WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(' Invalid Operation in SMTP transaction.');
blnResultado := false;
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(' Temporary problems with sending email - try again
later.');
blnResultado := false;
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(' Errors in code for SMTP transaction.');
blnResultado := false;

END;
Si me ayudais con esto... flipo....
Un saludo
Txarly
__________________
¿Por qué Uri Geller doblaba cucharas?
  #2 (permalink)  
Antiguo 10/11/2003, 10:13
Avatar de txarly  
Fecha de Ingreso: marzo-2003
Ubicación: Eibar (Gipuzkoa)
Mensajes: 455
Antigüedad: 21 años, 8 meses
Puntos: 2
Alguien tiene alguna idea???
Lo que necesito es enviar un formulario por correo con la posibilidad de que envie ficheros adjuntos de campos type="file"
__________________
¿Por qué Uri Geller doblaba cucharas?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.