CREATE OR REPLACE PACKAGE PKG_SEND_MAILS AS
----------------------------------------------------------------------------------
-- SEND MAILS ALL ADRESS WHIT my_id=id
----------------------------------------------------------------------------------
PROCEDURE SEND_ALERT_MSG (my_id IN NUMBER);
PROCEDURE SEND_ALERT_MSG (my_id IN NUMBER, my_text in varchar2);
------------------------------------------------------------------------------------
--end package
------------------------------------------------------------------------------------
end;
CREATE OR REPLACE PACKAGE BODY PKG_SEND_MAILS AS
PROCEDURE SEND_MAIL (
msg_from varchar2,
msg_to varchar2,
msg_subject varchar2,
msg_text varchar2 )
IS
c utl_smtp.connection;
rc integer;
mailhost VARCHAR2(30) := 'localhost'; -- local database host
BEGIN
c := utl_smtp.open_connection(mailhost, 25); -- SMTP on port 25
utl_smtp.helo(c, mailhost);
utl_smtp.mail(c, msg_from);
utl_smtp.rcpt(c, msg_to);
utl_smtp.data(c,'From: ' || msg_from || utl_tcp.crlf ||
'To: ' || msg_to || utl_tcp.crlf ||
'Subject: ' || msg_subject ||
utl_tcp.crlf || msg_text);
utl_smtp.quit(c);
EXCEPTION
WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(' Invalid Operation in Mail attempt
using UTL_SMTP.');
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(' Temporary e-mail issue - try again');
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(' Permanent Error Encountered.');
END;
/
PROCEDURE SEND_ALERT_MSG (my_id IN NUMBER) is
v_date varchar(100);
cursor all_recipients is
select alert_address, msg_subject, msg_text from alert_msg_receiver, alert_msg_type
where alert_msg_receiver.id=alert_msg_type.id and alert_msg_type.id=my_id;
begin
v_date:= to_char(sysdate,'dd-mm-yyyy hh24:mi:ss');
for r_all_recp in all_recipients loop
send_mail('webmaster@oracle-consulting.de',''||r_all_recp.alert_address
||'',''||r_all_recp.msg_subject||' date: '||v_date
||'',''||r_all_recp.msg_text||'');
end loop;
end;
PROCEDURE SEND_ALERT_MSG (my_id NUMBER,
my_text varchar2) is
v_date varchar(100);
cursor all_recipients is
select alert_address, msg_subject from alert_msg_receiver, alert_msg_type
where alert_msg_receiver.id=alert_msg_type.id and alert_msg_type.id=my_id;
begin
v_date:= to_char(sysdate,'dd-mm-yyyy hh24:mi:ss');
for r_all_recp in all_recipients loop
send_mail('webmaster@oracle-consulting.de',''
||r_all_recp.alert_address||'',''
||r_all_recp.msg_subject||' date: '
||v_date||'',''||my_text||'');
end loop;
end;
-----------------------------------------------------------------------------------
--end package
------------------------------------------------------------------------------------
end;
/