Pregunta: | 44697 - MANDAR EMAIL DESDE POWER BUILDER |
Autor: | Juan Oswaldo Villazon Luna |
Tengo este problema, estoy realizando un software para control de biblioteca, pero necesito que el mismo envie email a los usuarios cuando ha caducado sus cuentas o cuando estan fuera del limite de devolucion. Pero la verdad no se nada al respecto. |
Respuesta: | GABRIEL MANILLA |
MIRA LA VERDAD NO LO HE PROBADO PERO YO TENGO ESTE SCRIPT QUE TAL VES TE PUEDA AYUDAR, ME GUSTARIA SABER SI TE SIRVE Y REALMENTE FUNCIONA ME CONTESTARAS.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Procedimiento para mandar un EMAIL procedure sp_send_mail (pi_msg varchar2,pi_subject varchar2)IS c utl_smtp.connection; dom varchar2(30); p_f_email varchar2(30); p_to_email varchar2(30); p_subject varchar2(50); srvrPort number; cursor c_mail is select lower(correo_lib.mail_id) from correo_lib; begin -- Obtiene los datos del servidor de correo y el usario para el from... select mail_data.from_usr, mail_data.smtp_srvr, mail_data.smtp_prt into p_f_email, dom, srvrPort from mail_data; -- Asigna el mensaje que ha de enviarse... p_subject := pi_subject; -- Abre la coneXión con el server de correo... c := utl_smtp.open_connection(dom,srvrPort); utl_smtp.helo(c, dom); -- Le dice que debe ir en el campo from... utl_smtp.mail(c, p_f_email); -- Agrega personas en el campo TO: y en el CC: open c_mail; loop fetch c_mail into p_to_email; exit when c_mail%NOTFOUND; if substr(p_to_email,1,1) <> ' ' and p_to_email <> 'ninguno' then utl_smtp.rcpt(c, p_to_email); end if; end loop; close c_mail; utl_smtp.open_data(c); utl_smtp.write_data(c,'Subject: '||p_subject); utl_smtp.write_data(c, utl_tcp.CRLF || 'Date: ' || TO_CHAR( SYSDATE, 'dd-Mon-yyyy hh24 mi:ss' )); utl_smtp.write_data(c, utl_tcp.CRLF || 'From: ' || p_f_email || ' <' || p_f_email || '>' ); open c_mail; loop fetch c_mail into p_to_email; exit when c_mail%NOTFOUND; if substr(p_to_email,1,1) <> ' ' and p_to_email <> 'ninguno' then utl_smtp.write_data(c, utl_tcp.CRLF || 'To: ' || p_to_email); end if; end Loop; close c_mail; utl_smtp.write_data(c, utl_tcp.CRLF || 'Proceso de Liberación de Cubos SVD'); utl_smtp.write_data(c, utl_tcp.CRLF || pi_msg); utl_smtp.close_data(c); utl_smtp.quit(c); EXCEPTION WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN raise_application_error(-20002,'Failed to send mail due to the following error: ' || sqlerrm); utl_smtp.quit(c); end; |