From ian@SLAC.Stanford.EDU Thu, 19 Jul 2001 14:00:55 -0700 From: "MacGregor, Ian A." Date: Thu, 19 Jul 2001 14:00:55 -0700 Subject: RE: How to send html using UTL_SMTP Message-ID: MIME-Version: 1.0 Content-Type: text/plain One of our developers just wrote a package to do just that ------------------------------------------------------------------------------------------------------------------ PACKAGE HTML_Mail IS PROCEDURE Send(P_TO IN VARCHAR2, P_FROM IN VARCHAR2, P_SUBJECT IN VARCHAR2, P_CC IN VARCHAR2 DEFAULT NULL, P_BCC IN VARCHAR2 DEFAULT NULL, P_TEXT IN VARCHAR2 DEFAULT NULL, P_HTML IN VARCHAR2); END HTML_Mail; PACKAGE BODY HTML_Mail IS -------------------------------------------------------------------------------- -- Name: HTML_Mail.Send -- -- Description: Send HTML e-mail -- -- Parameters: P_TO To Address(es) -- P_FROM From Address -- P_SUBJECT Subject -- P_CC Cc Address(es) -- P_BCC Bcc Address(es) -- P_TEXT Plain text version of the message -- P_HTML HTML text version of the message -- -------------------------------------------------------------------------------- PROCEDURE Send(P_TO IN VARCHAR2, P_FROM IN VARCHAR2, P_SUBJECT IN VARCHAR2, P_CC IN VARCHAR2 DEFAULT NULL, P_BCC IN VARCHAR2 DEFAULT NULL, P_TEXT IN VARCHAR2, P_HTML IN VARCHAR2) IS boundary VARCHAR2(60) := 'Boundary_(ID_' || 'Boundary_(ID_' || TO_CHAR(SYSDATE, 'MISS_DDHH12_ MMYY_HH24_SSMI') || ')'; txtbody VARCHAR2(32000) := NULL; msgbody VARCHAR2(32000) := ' ' || p_subject || ' '; BEGIN plsql_mail.contact_smtpsrv(P_FROM, RTRIM(P_TO || ';' || P_CC || ';' || P_BCC, '; ')) ; plsql_mail.send_header('From', P_FROM); plsql_mail.send_header('To', P_TO); IF P_CC IS NOT NULL THEN plsql_mail.send_header('Cc', P_CC); END IF; plsql_mail.send_header('Subject', P_SUBJECT); plsql_mail.send_header('Content-type', 'multipart/alternative; boundary="' || boundary || '" This is a multi-part message in MIME format. --' || boundary || ' Content-type: text/html; charset=iso-8859-1 Content-transfer-encoding: 7BIT ' || P_TEXT || ' --' || boundary || ' Content-type: text/html; charset=iso-8859-1 Content-transfer-encoding: 7BIT '); plsql_mail.send_body(P_HTML || ' --' || boundary || '--'); plsql_mail.signoff_smtpsrv; END Send; END HTML_Mail; / ------------------------------------------------------------------------------------------------------------------------- PLSQL_MAIL is a package which interfaces with utl_smtp create or replace package plsql_mail as procedure contact_smtpsrv(sender in varchar2, recipients in varchar2); procedure send_header (name in varchar2, header in varchar2); procedure send_body(mail_text in varchar2); procedure signoff_smtpsrv; end plsql_mail; / create or replace package body plsql_mail as c utl_smtp.connection; procedure contact_smtpsrv(sender in varchar2, recipients in varchar2) is token_position number(5,0); recipient_string varchar2(2000); recipient varchar2(100); Begin c := utl_smtp.open_connection('