SlideShare a Scribd company logo
1 of 4
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;

More Related Content

What's hot

C programs
C programsC programs
C programs
Minu S
 

What's hot (20)

Oopsprc1e
Oopsprc1eOopsprc1e
Oopsprc1e
 
week-18x
week-18xweek-18x
week-18x
 
week-11x
week-11xweek-11x
week-11x
 
Bcsl 033 data and file structures lab s2-3
Bcsl 033 data and file structures lab s2-3Bcsl 033 data and file structures lab s2-3
Bcsl 033 data and file structures lab s2-3
 
Adding two integers in c
Adding two integers in cAdding two integers in c
Adding two integers in c
 
Bcsl 033 data and file structures lab s1-3
Bcsl 033 data and file structures lab s1-3Bcsl 033 data and file structures lab s1-3
Bcsl 033 data and file structures lab s1-3
 
C Programming Example
C Programming ExampleC Programming Example
C Programming Example
 
C Programming Example
C Programming Example C Programming Example
C Programming Example
 
C Programming Language Part 7
C Programming Language Part 7C Programming Language Part 7
C Programming Language Part 7
 
Progr3
Progr3Progr3
Progr3
 
Bcsl 033 data and file structures lab s2-1
Bcsl 033 data and file structures lab s2-1Bcsl 033 data and file structures lab s2-1
Bcsl 033 data and file structures lab s2-1
 
Bcsl 033 data and file structures lab s4-2
Bcsl 033 data and file structures lab s4-2Bcsl 033 data and file structures lab s4-2
Bcsl 033 data and file structures lab s4-2
 
Understanding storage class using nm
Understanding storage class using nmUnderstanding storage class using nm
Understanding storage class using nm
 
Bcsl 033 data and file structures lab s1-1
Bcsl 033 data and file structures lab s1-1Bcsl 033 data and file structures lab s1-1
Bcsl 033 data and file structures lab s1-1
 
Bcsl 033 data and file structures lab s3-3
Bcsl 033 data and file structures lab s3-3Bcsl 033 data and file structures lab s3-3
Bcsl 033 data and file structures lab s3-3
 
C programs
C programsC programs
C programs
 
Expressions using operator in c
Expressions using operator in cExpressions using operator in c
Expressions using operator in c
 
Decision making and branching
Decision making and branchingDecision making and branching
Decision making and branching
 
Bcsl 033 data and file structures lab s2-2
Bcsl 033 data and file structures lab s2-2Bcsl 033 data and file structures lab s2-2
Bcsl 033 data and file structures lab s2-2
 
Switch
SwitchSwitch
Switch
 

Viewers also liked

Duane Slaney Resume Word Format
Duane Slaney Resume Word FormatDuane Slaney Resume Word Format
Duane Slaney Resume Word Format
Duane Slaney
 
EJ Roe and Michael Watson-Deep Sea Soil Collector
EJ Roe and Michael Watson-Deep Sea Soil CollectorEJ Roe and Michael Watson-Deep Sea Soil Collector
EJ Roe and Michael Watson-Deep Sea Soil Collector
Evan (E.J.) Roe
 

Viewers also liked (20)

Estrategias y Promoción
Estrategias y PromociónEstrategias y Promoción
Estrategias y Promoción
 
ESTATUS CONOFAM
ESTATUS CONOFAMESTATUS CONOFAM
ESTATUS CONOFAM
 
Coaching
CoachingCoaching
Coaching
 
Newsletter june 2015
Newsletter june 2015Newsletter june 2015
Newsletter june 2015
 
PROGRAMA "SOMOS MEXICANOS"
PROGRAMA "SOMOS MEXICANOS"PROGRAMA "SOMOS MEXICANOS"
PROGRAMA "SOMOS MEXICANOS"
 
Chocolate andrey
Chocolate andreyChocolate andrey
Chocolate andrey
 
Receta pollo empapelado
Receta pollo empapeladoReceta pollo empapelado
Receta pollo empapelado
 
El hombre mas antiguo
El hombre mas antiguoEl hombre mas antiguo
El hombre mas antiguo
 
CONOFAM STATUTOS
CONOFAM STATUTOSCONOFAM STATUTOS
CONOFAM STATUTOS
 
ESTADÍSTICA PARA EL ITAM
ESTADÍSTICA PARA EL ITAMESTADÍSTICA PARA EL ITAM
ESTADÍSTICA PARA EL ITAM
 
Internal Kinetics Personal Training Team
Internal Kinetics Personal Training TeamInternal Kinetics Personal Training Team
Internal Kinetics Personal Training Team
 
Duane Slaney Resume Word Format
Duane Slaney Resume Word FormatDuane Slaney Resume Word Format
Duane Slaney Resume Word Format
 
EJ Roe and Michael Watson-Deep Sea Soil Collector
EJ Roe and Michael Watson-Deep Sea Soil CollectorEJ Roe and Michael Watson-Deep Sea Soil Collector
EJ Roe and Michael Watson-Deep Sea Soil Collector
 
Mercadeo Virtual
Mercadeo VirtualMercadeo Virtual
Mercadeo Virtual
 
Empreendedorismo no marketing
Empreendedorismo no marketingEmpreendedorismo no marketing
Empreendedorismo no marketing
 
ACCIONES PARA ATENCIÓN A MIGRANTES
ACCIONES PARA ATENCIÓN A MIGRANTESACCIONES PARA ATENCIÓN A MIGRANTES
ACCIONES PARA ATENCIÓN A MIGRANTES
 
Mercadeo de servicios
Mercadeo de serviciosMercadeo de servicios
Mercadeo de servicios
 
Fifa scam crisis
Fifa scam crisisFifa scam crisis
Fifa scam crisis
 
What Is Hip-Hop?
What Is Hip-Hop?What Is Hip-Hop?
What Is Hip-Hop?
 
Portfolio_AccordionPages
Portfolio_AccordionPagesPortfolio_AccordionPages
Portfolio_AccordionPages
 

Similar to How to send a mail from utl smtp or from back end

Plsql task answers
Plsql task answersPlsql task answers
Plsql task answers
Nawaz Sk
 
Rajeev oops 2nd march
Rajeev oops 2nd marchRajeev oops 2nd march
Rajeev oops 2nd march
Rajeev Sharan
 
Modelling and In-Database Management of Relational, Data-aware Processes
Modelling and In-Database Management of Relational, Data-aware ProcessesModelling and In-Database Management of Relational, Data-aware Processes
Modelling and In-Database Management of Relational, Data-aware Processes
Andrey Rivkin
 

Similar to How to send a mail from utl smtp or from back end (20)

Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07Oracle - Program with PL/SQL - Lession 07
Oracle - Program with PL/SQL - Lession 07
 
PLSQL.docx
PLSQL.docxPLSQL.docx
PLSQL.docx
 
Rewrite the printInfo() functions of the Employee and Department cla.pdf
Rewrite the printInfo() functions of the Employee and Department cla.pdfRewrite the printInfo() functions of the Employee and Department cla.pdf
Rewrite the printInfo() functions of the Employee and Department cla.pdf
 
Sql pl
Sql plSql pl
Sql pl
 
SQL-PL
SQL-PLSQL-PL
SQL-PL
 
BScPLSQL.pdf
BScPLSQL.pdfBScPLSQL.pdf
BScPLSQL.pdf
 
Oracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web ServicesOracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web Services
 
Plsql task answers
Plsql task answersPlsql task answers
Plsql task answers
 
MCRL2
MCRL2MCRL2
MCRL2
 
Oracle - Program with PL/SQL - Lession 01
Oracle - Program with PL/SQL - Lession 01Oracle - Program with PL/SQL - Lession 01
Oracle - Program with PL/SQL - Lession 01
 
Detection of errors and potential vulnerabilities in C and C++ code using the...
Detection of errors and potential vulnerabilities in C and C++ code using the...Detection of errors and potential vulnerabilities in C and C++ code using the...
Detection of errors and potential vulnerabilities in C and C++ code using the...
 
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.comMcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
Mcrl2 by kashif.namal@gmail.com, adnanskyousafzai@gmail.com
 
Rajeev oops 2nd march
Rajeev oops 2nd marchRajeev oops 2nd march
Rajeev oops 2nd march
 
PL_PKG_TASK
PL_PKG_TASKPL_PKG_TASK
PL_PKG_TASK
 
February0504 pm
February0504 pmFebruary0504 pm
February0504 pm
 
Oracle - Program with PL/SQL - Lession 03
Oracle - Program with PL/SQL - Lession 03Oracle - Program with PL/SQL - Lession 03
Oracle - Program with PL/SQL - Lession 03
 
Modelling and In-Database Management of Relational, Data-aware Processes
Modelling and In-Database Management of Relational, Data-aware ProcessesModelling and In-Database Management of Relational, Data-aware Processes
Modelling and In-Database Management of Relational, Data-aware Processes
 
dbms project with output.docx
dbms project with output.docxdbms project with output.docx
dbms project with output.docx
 
LAB_MANUAL_cpl_21scheme-2.pdf
LAB_MANUAL_cpl_21scheme-2.pdfLAB_MANUAL_cpl_21scheme-2.pdf
LAB_MANUAL_cpl_21scheme-2.pdf
 
Plsql
PlsqlPlsql
Plsql
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

How to send a mail from utl smtp or from back end

  • 1. 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),
  • 2. 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);
  • 3. 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
  • 4. raise_application_error ( - 20001, 'Other Errors: '||sqlerrm||';'|| SQLCODE); END xxx_popmd_upd_email_notif;