DBA Tips Archive for Oracle
Sending E-Mail in PL/SQL
by Jeff Hunter, Sr. Database Administrator
CREATE OR REPLACE PROCEDURE SEND_MAIL_TCP ( msg_from VARCHAR2 := 'firstname.lastname@example.org' , 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 => 'email@example.com' , msg_text => 'This is a test message.');
Copyright (c) 1998-2018 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 firstname.lastname@example.org.
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.