DBA Tips Archive for Oracle

  


Sending E-Mail in PL/SQL

by Jeff Hunter, Sr. Database Administrator

Example Code

CREATE OR REPLACE PROCEDURE SEND_MAIL_TCP (
    msg_from     VARCHAR2 := 'sender@testing.com'
  , msg_to       VARCHAR
  , msg_subject  VARCHAR2 := 'E-Mail message from your database'
  , msg_text     VARCHAR2 := ''
)
IS
  c   UTL_TCP.CONNECTION;
  rc  INTEGER;
BEGIN 
  c  := UTL_TCP.OPEN_CONNECTION('localhost', 25);       -- open the SMTP port 25 on local machine
  rc := UTL_TCP.WRITE_LINE(c, 'HELO localhost'); 
  rc := UTL_TCP.WRITE_LINE(c, 'MAIL FROM: '||msg_from); 
  rc := UTL_TCP.WRITE_LINE(c, 'RCPT TO: '||msg_to); 
  rc := UTL_TCP.WRITE_LINE(c, 'DATA');                  -- Start message body 
  rc := UTL_TCP.WRITE_LINE(c, 'Subject: '||msg_subject); 
  rc := UTL_TCP.WRITE_LINE(c, ''); 
  rc := UTL_TCP.WRITE_LINE(c, msg_text); 
  rc := UTL_TCP.WRITE_LINE(c, '.');                     -- End of message body 
  rc := UTL_TCP.WRITE_LINE(c, 'QUIT');
  UTL_TCP.CLOSE_CONNECTION(c);                          -- Close the connection 
EXCEPTION 
  WHEN others THEN 
    RAISE_APPLICATION_ERROR(-20000, 'Unable to send e-mail message from PL/SQL routine.'); 
END;

Testing the Example Code

EXEC SEND_MAIL_TCP ( msg_to => 'test_user@testing.com'
                   , msg_text => 'This is a test message.');


Copyright (c) 1998-2017 Jeffrey M. Hunter. All rights reserved.

All articles, scripts and material located at the Internet address of http://www.idevelopment.info is the copyright of Jeffrey M. Hunter and is protected under copyright laws of the United States. This document may not be hosted on any other site without my express, prior, written permission. Application to host any of the material elsewhere can be made by contacting me at jhunter@idevelopment.info.

I have made every effort and taken great care in making sure that the material included on my web site is technically accurate, but I disclaim any and all responsibility for any loss, damage or destruction of data or any other property which may arise from relying on it. I will in no case be liable for any monetary damages arising from such loss, damage or destruction.

Last modified on
Thursday, 18-Nov-2010 18:38:56 EST
Page Count: 24629