La Web del Programador: Comunidad de Programadores
 
    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;