Kirim email pake plsql
Contoh
function send_html_mail
( p_from VARCHAR2, -- dapat menerima email dari alamat ybs: "Nama
Anda" <[EMAIL PROTECTED]>;
p_to varchar2, -- untuk kirim ke beberapa email pisahkan dengan
tanda koma
p_cc varchar2,
p_bcc varchar2,
p_subject VARCHAR2,
p_body VARCHAR2, -- body bisa berupa html tags.
p_smtp_server varchar2 default 'jkt-noexm2.sampoerna.co.id'
) return varchar2;
function get_chunk
(
p_big_chunk in out varchar2,
p_delimiter varchar2
) return varchar2;
end exm_mail_package;
/
CREATE OR REPLACE PACKAGE BODY exm_mail_package as
procedure send_header
(
p_conn in out utl_smtp.connection,
name in varchar2,
header in varchar2
) as
begin
utl_smtp.write_data(p_conn, name || ': ' || header || utl_tcp.crlf);
end;
function get_mail_address(p_name_mail_combo varchar2) return varchar2
is
v_ctr number;
v_result varchar2(100);
begin
v_ctr := instr(p_name_mail_combo, '<');
if v_ctr > 0 then
v_result := substr(p_name_mail_combo, v_ctr + 1,
instr(p_name_mail_combo, '>') - v_ctr - 1);
else
v_result := p_name_mail_combo;
end if;
return v_result;
end;
function send_html_mail
(
p_from VARCHAR2, -- dapat menerima email dari alamat ybs: "Nama
Anda" <[EMAIL PROTECTED]>;
p_to varchar2, -- untuk kirim ke beberapa email pisahkan dengan
tanda koma
p_cc varchar2,
p_bcc varchar2,
p_subject VARCHAR2,
p_body VARCHAR2, -- body bisa berupa html tags.
p_smtp_server varchar2 default 'jkt-noexm2.sampoerna.co.id'
) return varchar2 IS
v_conn utl_smtp.connection;
html_head VARCHAR2(255);
v_from varchar2(4000);
v_rcpt_list varchar2(4000);
v_rcpt varchar2(4000);
v_ctr number;
BEGIN
v_from := get_mail_address(p_from);
v_rcpt_list := p_to || ',' || p_cc || ',' || p_bcc;
v_ctr := 0;
while length(v_rcpt_list) <> v_ctr loop
v_ctr := length(v_rcpt_list);
v_rcpt_list := replace(v_rcpt_list, ',,', ',');
end loop;
v_conn := utl_smtp.open_connection(p_smtp_server);
while v_rcpt_list is not null loop
v_rcpt := get_chunk(v_rcpt_list, ',');
--<--Change this line
html_head := '<!doctype html public "-//w3c//dtd html 4.0
transitional//en">';
utl_smtp.helo(v_conn, p_smtp_server);
--<--Change this line
utl_smtp.mail(v_conn, v_from);
utl_smtp.rcpt(v_conn, get_mail_address(v_rcpt));
utl_smtp.open_data(v_conn);
send_header(v_conn, 'Content-Transfer-Encoding:','8bit');
send_header(v_conn, 'Content-Type', 'text/html; CHARSET=UTF-8');
send_header(v_conn, 'From', p_from);
send_header(v_conn, 'To', p_to);
send_header(v_conn, 'Cc', p_cc);
send_header(v_conn, 'Bcc', p_bcc);
send_header(v_conn, 'Subject', p_subject);
utl_smtp.write_data(v_conn, utl_tcp.CRLF || html_head || p_body);
utl_smtp.close_data(v_conn);
end loop;
utl_smtp.quit(v_conn);
return '';
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
BEGIN
utl_smtp.quit(v_conn);
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
NULL;
-- kalo SMTP server down maka koneksi ke server tidak tersedia
END;
return sqlerrm;
when others then return sqlerrm;
END send_html_mail;
function get_chunk
(
p_big_chunk in out varchar2,
p_delimiter varchar2
) return varchar2
is
v_pos number;
v_result varchar2(255);
begin
v_pos := instr(p_big_chunk, p_delimiter);
if v_pos = 0 then
v_pos := length(p_big_chunk) + 1;
end if;
v_result := substr(p_big_chunk, 1, v_pos - 1);
p_big_chunk := substr(p_big_chunk, v_pos + 1);
return v_result;
end;
end exm_mail_package;
/
------------------------------------------------------------------------
------------------
Contoh Kirim email pake webutil/komponen java
Di form di panggil pada event when_buttone_pressed
PROCEDURE jebrod IS
hAlert ALERT := FIND_ALERT('MAIL_QUESTION');
iAns PLS_INTEGER;
len integer;
lastchar varchar2(1);
jex ORA_JAVA.JEXCEPTION;
RetVal varchar2(200);
P_FROM VARCHAR2(200);
P_TO VARCHAR2(200);
P_CC VARCHAR2(200);
P_BCC VARCHAR2(200);
P_SUBJECT VARCHAR2(200);
P_BODY VARCHAR2(2000);
P_SMTP_SERVER VARCHAR2(200);
a varchar2(200);
b varchar2(200);
c varchar2(200);
x number:=0;
BEGIN
-- ini untuk external
-- P_FROM := 'Administrator';
-- P_TO := '"Ade Hendi"@sampoerna,[EMAIL PROTECTED]';
for i in (select email,user_name from EXM_USER_MST where user_id in
(
select user_id from
FND_USER_RESPONSIBILITIES
where responsibility_id
in(
select responsibility_id from FND_RESPONSIBILITIES
where fieldname1='DOC' ))and email!='-')loop
x:=x+1;
a:=i.email;
b:=b||','||a;
ProgressBar.setBackground('white');
ProgressBar.setForeground('orange');
ProgressBar.setPercentage(x);
synchronize;
End Loop;
c:=substr(b,2,length(b));
msgbox('mail sent to '||c,'Exim Mail');
:global.email_ceurik:=c;
P_FROM := 'EXIM-IS';
P_BCC := NULL;
P_SUBJECT := 'Import Request '||:EXM_HDR_IRF.RFI_NO;
P_BODY := 'Need Your Action to create Import Order for
'||chr(13)||chr(13)||
'RFI No
: '||:EXM_HDR_IRF.RFI_NO||chr(13)||
'Transaction
Type : Import Request '||chr(13)||
'Requestor
: '||:GLOBAL.USER_NAME||chr(13)||
'Email
Address : '||:global.email||chr(13)||chr(13)||chr(13)||
'Best
regards,'||chr(13)||:GLOBAL.USER_NAME||chr(13)||
:global.email;
SendMessage.send(get_smtp_server,
'EXIM-IS',
c,
P_SUBJECT,
P_BODY,
:EXM_HDR_IRF.ATTACHMENT);
MsgBoxjava.Show(MsgBoxjava.NOTE_ALERT,'Message Sent');
EXCEPTION
WHEN ORA_JAVA.EXCEPTION_THROWN then
begin
jex := ORA_JAVA.LAST_EXCEPTION;
MsgBoxjava.Show(MsgBoxjava.STOP_ALERT,SendMessageException.toString(jex)
);
exception
WHEN ORA_JAVA.EXCEPTION_THROWN then
MsgBoxjava.Show(MsgBoxjava.STOP_ALERT,'Your classpath is
not correctly defined in your environment file. The JavaMail jar files
cannot be located');
end;
WHEN ORA_JAVA.JAVA_ERROR then
MsgBoxjava.Show(MsgBoxjava.STOP_ALERT,'Java Error:
'||ORA_JAVA.LAST_ERROR);
END;
_____
From: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of fata hudaya
Sent: Monday, January 29, 2007 12:03 PM
To: [email protected]; [EMAIL PROTECTED]
Subject: [indo-oracle] Kirim Email Dengan Attachment di PL/SQL
Dear Masters & Friends,
Kalo saya mo kirim email + attachments (berupa text file) dari procedure
PL/SQL gimana ya ?
Soalnya saya belum pernah buat procedure spt ini. Semoga teman2 punya
pengalaman dengan masalah ini, mohon dishare...:D, Please help me...
Many Thanks & Best Regards,
Fata Hudaya,
+628567143271
[EMAIL PROTECTED] <mailto:elfhatoy%40gmail.com>
http://elhoedaya.bravehost.com <http://elhoedaya.bravehost.com>
__________________________________________________________
Inbox full of unwanted email? Get leading protection and 1GB storage
with All New Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html
<http://uk.docs.yahoo.com/nowyoucan.html>
[Non-text portions of this message have been removed]
The information contained in this email is or may be confidential, legally
privileged, and proprietary in nature or otherwise protected by law from
disclosure and is intended solely for the use of the addressee. If you are not
the intended recipient, you are hereby notified that any disclosure,
dissemination, distribution, copying or use of any part of this mail is
strictly prohibited and unlawful. If you received this email in error, please
immediately notify the sender or our email administrator at [EMAIL PROTECTED]
and delete it from your system. Thank you.
[Non-text portions of this message have been removed]