Oracle UTL_SMTP
This is an example of using PL/SQL to send plain text email from Oracle database using UTL_SMTP. For this to work, the database should be configured for SMTP (along with related Java classes/ JVM ). The UTL_SMTP package is designed for SMTP communication specified by IETF RFC-821. For the example below, the actual SMTP mail server name has to be used (l_mailhost). The code can be enhanced to send mail with file attachments. The other PL/SQL utility function is UTL_MAIL.

Oracle UTL_SMTP
DECLARE
 PROCEDURE send_mail(p_sender IN VARCHAR2,
    p_recipient IN VARCHAR2,
    p_message IN VARCHAR2) AS
  l_mailhost   VARCHAR2(255) := 'smtp_server_name';  -- use local SMTP server
  l_mail_conn  utl_smtp.connection;
 BEGIN
   l_mail_conn := utl_smtp.open_connection(l_mailhost, 25);
   utl_smtp.helo(l_mail_conn, l_mailhost);
   utl_smtp.mail(l_mail_conn, p_sender);
   utl_smtp.rcpt(l_mail_conn, p_recipient);
   utl_smtp.open_data(l_mail_conn );
   utl_smtp.write_data(l_mail_conn, p_message);
   utl_smtp.close_data(l_mail_conn );
   utl_smtp.quit(l_mail_conn);
 END send_mail;

BEGIN
  send_mail('sender@domain.com',  'recipient@domain.com',
    CHR(10)||'SMTP Test ....'||CHR(13)||
   'Sent From '||SUBSTR(UTL_INADDR.GET_HOST_NAME,1,40)||' On'||CHR(10)||TO_CHAR(sysdate,'mm/dd/yyyy hh24:mi:ss'));
END;
/

Oracle registered trademark of Oracle Corporation.

Last Revised On: October 13, 2013

  1436