1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| CREATE OR REPLACE PROCEDURE Send_Mail (
p_sender VARCHAR2,
p_recipient VARCHAR2,
p_subject VARCHAR2,
p_message VARCHAR2
)
IS
c UTL_SMTP.connection;
v_mailserver VARCHAR2(30);
PROCEDURE Send_Header (NAME IN VARCHAR2, HEADER IN VARCHAR2)
AS
BEGIN
UTL_SMTP.write_data (c, NAME || ‘: ‘ || HEADER || UTL_TCP.crlf);
END;
BEGIN
v_mailserver := ’smtp.mondomaine.com’;
c := UTL_SMTP.open_connection (v_mailserver);
UTL_SMTP.helo (c, v_mailserver);
UTL_SMTP.mail (c, p_sender);
UTL_SMTP.rcpt (c, p_recipient);
UTL_SMTP.open_data (c);
Send_Header (’From’, ‘<’ || p_sender || ‘>’);
Send_Header (’To’, ‘<’ || p_recipient || ‘>’);
Send_Header (’Subject’, p_subject);
UTL_SMTP.write_data (c, UTL_TCP.crlf || p_message);
UTL_SMTP.close_data (c);
UTL_SMTP.quit (c);
EXCEPTION
WHEN UTL_SMTP.transient_error OR UTL_SMTP.permanent_error
THEN
BEGIN
UTL_SMTP.quit (c);
EXCEPTION
WHEN UTL_SMTP.transient_error OR UTL_SMTP.permanent_error
THEN
NULL;
END;
RAISE_APPLICATION_ERROR (-20000, ‘Failed to send mail due to the following error: ‘ || SQLERRM);
END;
/ |
Partager