HOW TO SEND A MAIL FROM UTL_SMTP OR FROM BACK END :
create or replace FUNCTION xxx_popmd_upd_email_notif (p_po_number VARCHAR2,
p_po_line NUMBER,
p_po_shipment_num NUMBER,
p_po_release_num NUMBER,
p_po_promissed_date VARCHAR2,
p_justification VARCHAR2)
RETURN VARCHAR2
AS
v_mail_conn utl_smtp.connection;
v_mail_host VARCHAR2 (30);
v_port_no NUMBER;
v_to_recipients apps.alr_distribution_lists.to_recipients%TYPE;
v_cc_recipients apps.alr_distribution_lists.cc_recipients%TYPE;
v_mail_subject VARCHAR2 (3000);
v_from VARCHAR2 (80) := 'OracleMailerTest@xxx.com';
crlf VARCHAR2 (2) := CHR (13) ||CHR (10);
v_employee_name apps.fnd_user.user_name%TYPE;
v_cp_date VARCHAR2 (30);
v_user_id NUMBER := fnd_profile.value ('USER_ID');
v_req_id NUMBER := fnd_global.conc_request_id;
l_cc VARCHAR2 (3000);
v_cc VARCHAR2 (3000);
l_to VARCHAR2 (2000);
l_tmp VARCHAR2 (3000);
n NUMBER;
BEGIN
SELECT to_recipients,
cc_recipients
INTO v_to_recipients,
v_cc_recipients
FROM apps.alr_distribution_lists
WHERE name = 'ORIGINAL_PROMISE_DATE_UPDATE';
dbms_output.put_line ('Email Distribution List: ' || v_to_recipients);
SELECT DISTINCT NVL (pf.full_name, fu.user_name)
INTO v_employee_name
FROM per_all_people_f pf,
fnd_user fu
WHERE fu.employee_id = pf.person_id(+)
AND user_id = v_user_id;
dbms_output.put_line ('Update by User Name: ' || v_employee_name);
SELECT NVL (TO_CHAR (actual_start_date, 'DD-MON-YYYY HH24:MI:SS'), sysdate)
INTO v_cp_date
FROM fnd_concurrent_requests fcr
WHERE request_id = v_req_id;
dbms_output.put_line ('Update by date: ' || v_cp_date);
SELECT SUBSTR (v.profile_option_value, 1, instr (v.profile_option_value, ':') - 1),
to_number (SUBSTR (v.profile_option_value, 20, 2))
INTO v_mail_host,
v_port_no
FROM fnd_profile_option_values v,
fnd_profile_options o
WHERE v.profile_option_id = o.profile_option_id
AND o.profile_option_name = 'XX_CUS_TOP_EMAIL_SMTP';
l_cc := v_to_recipients;
LOOP
EXIT WHEN l_cc IS NULL;
v_mail_subject := 'Original Promise Date Update - ' || p_po_number || ' by ' || v_employee_name;
v_mail_conn := utl_smtp.open_connection (v_mail_host, v_port_no);
utl_smtp.helo (v_mail_conn, v_mail_host);
utl_smtp.mail (v_mail_conn, v_from);
n := instr (l_cc, ',');
--IF n =0 THEN exit; end if;
l_tmp := SUBSTR (l_cc, 1, n - 1);
IF n = 0 THEN
l_tmp := l_cc;
l_cc := NULL;
END IF;
dbms_output.put_line ('Output1: ' || l_tmp);
dbms_output.put_line ('Output2: ' || l_cc);
--utl_smtp.rcpt( l_tmp );
utl_smtp.rcpt (v_mail_conn, l_tmp);
utl_smtp.data (v_mail_conn, 'Date: ' || TO_CHAR (sysdate, 'Dy, DD Mon YYYY hh24:mi:ss')
|| crlf || 'From: ' || v_from
|| crlf || 'Subject: ' || v_mail_subject
|| crlf || 'To: ' || v_to_recipients
|| crlf || 'Cc: ' || v_cc_recipients
|| crlf || 'PO Number: ' || p_po_number
|| crlf || 'Line Number: ' || p_po_line
|| crlf || 'Shipment Number: ' || p_po_shipment_num
|| crlf || 'Release Number: ' || p_po_release_num
|| crlf || 'New Original Promised Date: ' || p_po_promissed_date
|| crlf || 'Justification: ' || p_justification|| crlf
|| crlf || 'Updated By :' ||v_employee_name
|| crlf || 'Date Updated :' ||v_cp_date|| crlf);
l_cc := SUBSTR (l_cc, n + 1);
dbms_output.put_line ('Output3: ' || l_cc);
utl_smtp.quit (v_mail_conn);
END LOOP;
v_cc:=v_cc_recipients;
LOOP
EXIT WHEN v_cc IS NULL;
v_mail_subject := 'Original Promise Date Update - ' || p_po_number || ' by ' || v_employee_name;
v_mail_conn := utl_smtp.open_connection (v_mail_host, v_port_no);
utl_smtp.helo (v_mail_conn, v_mail_host);
utl_smtp.mail (v_mail_conn, v_from);
n := instr (v_cc, ',');
--IF n =0 THEN exit; end if;
l_tmp := SUBSTR (v_cc, 1, n - 1);
IF n = 0 THEN
l_tmp := v_cc;
v_cc := NULL;
END IF;
dbms_output.put_line ('Output1: ' || l_tmp);
dbms_output.put_line ('Output2: ' || v_cc);
--utl_smtp.rcpt( l_tmp );
utl_smtp.rcpt (v_mail_conn, l_tmp);
utl_smtp.data (v_mail_conn, 'Date: ' || TO_CHAR (sysdate, 'Dy, DD Mon YYYY hh24:mi:ss')
|| crlf || 'From: ' || v_from
|| crlf || 'Subject: ' || v_mail_subject
|| crlf || 'To: ' || v_to_recipients
|| crlf || 'Cc: ' || v_cc_recipients
|| crlf || crlf || 'PO Number: ' || p_po_number
|| crlf || 'Line Number: ' || p_po_line
|| crlf || 'Shipment Number: ' || p_po_shipment_num
|| crlf || 'Release Number: ' || p_po_release_num
|| crlf || 'New Original Promised Date: ' || p_po_promissed_date
|| crlf || 'Justification: ' || p_justification|| crlf
|| crlf || 'Updated By :' ||v_employee_name
|| crlf || 'Date Updated :' ||v_cp_date|| crlf);
v_cc := SUBSTR (v_cc, n + 1);
dbms_output.put_line ('Output3: ' || v_cc);
utl_smtp.quit (v_mail_conn);
END LOOP;
RETURN ('Notification Sent');
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
raise_application_error ( - 20000, 'Unable to Send Mail', true);
WHEN OTHERS THEN
raise_application_error ( - 20001, 'Other Errors: '||sqlerrm||';'||SQLCODE);
END xxx_popmd_upd_email_notif;
create or replace FUNCTION xxx_popmd_upd_email_notif (p_po_number VARCHAR2,
p_po_line NUMBER,
p_po_shipment_num NUMBER,
p_po_release_num NUMBER,
p_po_promissed_date VARCHAR2,
p_justification VARCHAR2)
RETURN VARCHAR2
AS
v_mail_conn utl_smtp.connection;
v_mail_host VARCHAR2 (30);
v_port_no NUMBER;
v_to_recipients apps.alr_distribution_lists.to_recipients%TYPE;
v_cc_recipients apps.alr_distribution_lists.cc_recipients%TYPE;
v_mail_subject VARCHAR2 (3000);
v_from VARCHAR2 (80) := 'OracleMailerTest@xxx.com';
crlf VARCHAR2 (2) := CHR (13) ||CHR (10);
v_employee_name apps.fnd_user.user_name%TYPE;
v_cp_date VARCHAR2 (30);
v_user_id NUMBER := fnd_profile.value ('USER_ID');
v_req_id NUMBER := fnd_global.conc_request_id;
l_cc VARCHAR2 (3000);
v_cc VARCHAR2 (3000);
l_to VARCHAR2 (2000);
l_tmp VARCHAR2 (3000);
n NUMBER;
BEGIN
SELECT to_recipients,
cc_recipients
INTO v_to_recipients,
v_cc_recipients
FROM apps.alr_distribution_lists
WHERE name = 'ORIGINAL_PROMISE_DATE_UPDATE';
dbms_output.put_line ('Email Distribution List: ' || v_to_recipients);
SELECT DISTINCT NVL (pf.full_name, fu.user_name)
INTO v_employee_name
FROM per_all_people_f pf,
fnd_user fu
WHERE fu.employee_id = pf.person_id(+)
AND user_id = v_user_id;
dbms_output.put_line ('Update by User Name: ' || v_employee_name);
SELECT NVL (TO_CHAR (actual_start_date, 'DD-MON-YYYY HH24:MI:SS'), sysdate)
INTO v_cp_date
FROM fnd_concurrent_requests fcr
WHERE request_id = v_req_id;
dbms_output.put_line ('Update by date: ' || v_cp_date);
SELECT SUBSTR (v.profile_option_value, 1, instr (v.profile_option_value, ':') - 1),
to_number (SUBSTR (v.profile_option_value, 20, 2))
INTO v_mail_host,
v_port_no
FROM fnd_profile_option_values v,
fnd_profile_options o
WHERE v.profile_option_id = o.profile_option_id
AND o.profile_option_name = 'XX_CUS_TOP_EMAIL_SMTP';
l_cc := v_to_recipients;
LOOP
EXIT WHEN l_cc IS NULL;
v_mail_subject := 'Original Promise Date Update - ' || p_po_number || ' by ' || v_employee_name;
v_mail_conn := utl_smtp.open_connection (v_mail_host, v_port_no);
utl_smtp.helo (v_mail_conn, v_mail_host);
utl_smtp.mail (v_mail_conn, v_from);
n := instr (l_cc, ',');
--IF n =0 THEN exit; end if;
l_tmp := SUBSTR (l_cc, 1, n - 1);
IF n = 0 THEN
l_tmp := l_cc;
l_cc := NULL;
END IF;
dbms_output.put_line ('Output1: ' || l_tmp);
dbms_output.put_line ('Output2: ' || l_cc);
--utl_smtp.rcpt( l_tmp );
utl_smtp.rcpt (v_mail_conn, l_tmp);
utl_smtp.data (v_mail_conn, 'Date: ' || TO_CHAR (sysdate, 'Dy, DD Mon YYYY hh24:mi:ss')
|| crlf || 'From: ' || v_from
|| crlf || 'Subject: ' || v_mail_subject
|| crlf || 'To: ' || v_to_recipients
|| crlf || 'Cc: ' || v_cc_recipients
|| crlf || 'PO Number: ' || p_po_number
|| crlf || 'Line Number: ' || p_po_line
|| crlf || 'Shipment Number: ' || p_po_shipment_num
|| crlf || 'Release Number: ' || p_po_release_num
|| crlf || 'New Original Promised Date: ' || p_po_promissed_date
|| crlf || 'Justification: ' || p_justification|| crlf
|| crlf || 'Updated By :' ||v_employee_name
|| crlf || 'Date Updated :' ||v_cp_date|| crlf);
l_cc := SUBSTR (l_cc, n + 1);
dbms_output.put_line ('Output3: ' || l_cc);
utl_smtp.quit (v_mail_conn);
END LOOP;
v_cc:=v_cc_recipients;
LOOP
EXIT WHEN v_cc IS NULL;
v_mail_subject := 'Original Promise Date Update - ' || p_po_number || ' by ' || v_employee_name;
v_mail_conn := utl_smtp.open_connection (v_mail_host, v_port_no);
utl_smtp.helo (v_mail_conn, v_mail_host);
utl_smtp.mail (v_mail_conn, v_from);
n := instr (v_cc, ',');
--IF n =0 THEN exit; end if;
l_tmp := SUBSTR (v_cc, 1, n - 1);
IF n = 0 THEN
l_tmp := v_cc;
v_cc := NULL;
END IF;
dbms_output.put_line ('Output1: ' || l_tmp);
dbms_output.put_line ('Output2: ' || v_cc);
--utl_smtp.rcpt( l_tmp );
utl_smtp.rcpt (v_mail_conn, l_tmp);
utl_smtp.data (v_mail_conn, 'Date: ' || TO_CHAR (sysdate, 'Dy, DD Mon YYYY hh24:mi:ss')
|| crlf || 'From: ' || v_from
|| crlf || 'Subject: ' || v_mail_subject
|| crlf || 'To: ' || v_to_recipients
|| crlf || 'Cc: ' || v_cc_recipients
|| crlf || crlf || 'PO Number: ' || p_po_number
|| crlf || 'Line Number: ' || p_po_line
|| crlf || 'Shipment Number: ' || p_po_shipment_num
|| crlf || 'Release Number: ' || p_po_release_num
|| crlf || 'New Original Promised Date: ' || p_po_promissed_date
|| crlf || 'Justification: ' || p_justification|| crlf
|| crlf || 'Updated By :' ||v_employee_name
|| crlf || 'Date Updated :' ||v_cp_date|| crlf);
v_cc := SUBSTR (v_cc, n + 1);
dbms_output.put_line ('Output3: ' || v_cc);
utl_smtp.quit (v_mail_conn);
END LOOP;
RETURN ('Notification Sent');
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
raise_application_error ( - 20000, 'Unable to Send Mail', true);
WHEN OTHERS THEN
raise_application_error ( - 20001, 'Other Errors: '||sqlerrm||';'||SQLCODE);
END xxx_popmd_upd_email_notif;
ReplyDeleteAGEN TERPERCAYA SEPANJANG MASA Klik Dan Dapatkan FREEBET sekarang Juga!!!
Thanks for sharing such a wonderful Post with us. I learnt alot from your post. I am appreciating from you to you will share more information about it. Please keep sharing. Thanks Alot
ReplyDeleteLenovo Service Center in Kukatpally, Hyderabad.
Best Laptop Service Center in Kukatpally, Hyderabad.
BCOM 1st Year TimeTable 2020
ReplyDeleteBCOM 2nd Year TimeTable 2020
BCOM 3rd Year TimeTable 2020
I just stumbled over this page and have to say - wow. The site is really good and kept up to date. Continue like