René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

utl_smtp [Oracle]


create or replace type vc_tab as table of varchar2(4000);
/

procedure send_maile(
  sender      in varchar2,
  sender_name in varchar2,
  subject     in varchar2,
  recipient   in varchar2_tab,
  text        in varchar2_tab
) 
is

  connection utl_smtp.connection;

  mailserver varchar2(50) := 'mailserver.somewhere.tld';

  crlf constant varchar2(2) := chr(13)||chr(10);

begin

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

  utl_smtp.helo(connection, mailserver);
  utl_smtp.mail(connection, sender);
  
  for i in 1 .. recipient.count loop
  utl_smtp.rcpt(connection,recipient(i));
  end loop;
  
  utl_smtp.open_data(connection);
  
  utl_smtp.write_data(connection, 'From: "' || sender_name || '" <' || sender || '>' || crlf);
  
  for i in 1 .. recipient.count loop
  utl_smtp.write_data(connection, 'To: "' || recipient(i) || '" <' || recipient(i) || '>' || crlf);
  end loop;
  
  utl_smtp.write_data(connection, 'Subject: ' || subject || crlf);
  
  utl_smtp.write_data(connection,crlf);
  
  for i in 1 .. text.count loop
  utl_smtp.write_data(connection,text(i) || crlf);
  end loop;
  
  
  utl_smtp.close_data(connection);
  utl_smtp.quit(connection);

end send_maile;