CREATE OR REPLACE PROCEDURE APPS.SEND_MAIL_HTML_TEST
is

v_message varchar2(2000);

conn utl_smtp.connection;
vrData RAW(32767);

sender varchar2(500) := 'prodmgr@test.ccc.com.tw';
receiver varchar2(500) :='keven@ccc.com.tw';
subj varchar2(200):='HTML Mail TEST';

--組成HTML語法
cursor cur1 is
select '' aa from dual
union all
select ''
|| '' aa
from mtl_system_items_b
where rownum<11
union all
select '
' || segment1 || ' ' || description || '
' aa from dual ;

r1 cur1%rowtype;

begin

--指定SMTP SERVER
conn := utl_smtp.open_connection('192.168.1.10');

--也可以指定Port:utl_smtp.open_connection('192.168.1.10',25);

--對SMTP SERVER發出答應
utl_smtp.helo(conn, 'ccc.com.tw');

--實際寄送的寄件者
utl_smtp.mail(conn, sender);

--實際寄送的收件者
utl_smtp.rcpt(conn, receiver);


utl_smtp.open_data(conn);

--開啟傳送mail內容,先傳送header的定義,也是mail內容的一部份,用mail的原始檔查看可以得知。
UTL_smtp.write_data(conn, 'MIME-Version: ' || '1.0' ||UTL_tcp.CRLF);

--指定格式為HTML,並將語系設為utf-8
UTL_smtp.write_data(conn, 'Content-Type: ' || 'text/html; charset=utf-8' || UTL_tcp.CRLF);
UTL_smtp.write_data(conn, 'Content-Transfer-Encoding: ' || '8bit'|| UTL_tcp.CRLF);

--如果格式為文字,則改為下列的語法,並將語系設為big5
--UTL_SMTP.WRITE_DATA(conn, 'Content-Type: text/plain; charset="big5"'||UTL_TCP.CRLF);

--下面一樣是傳送mail的內容,寄件人、副件、密件,會自動將收件者依類型區分,
--實際上mail寄送是不管副件、密件…等,只管mail地址。
utl_smtp.write_data(conn, 'From: "Name" <'||sender||'>'|| UTL_tcp.CRLF);
utl_smtp.write_data(conn, 'To: "Name" <'||receiver||'>'|| UTL_tcp.CRLF);
-- utl_smtp.write_data(conn, 'Cc: "Name" <'||creceiver||'>'|| UTL_tcp.CRLF);

--傳送mail的內容,主旨
UTL_SMTP.WRITE_RAW_DATA(conn, UTL_RAW.CAST_TO_RAW('Subject: '|| subj ||UTL_tcp.CRLF));
UTL_smtp.write_data(conn, UTL_tcp.CRLF);

for r1 in cur1 loop

--將要傳送的mail內文轉碼後傳送
vrData := utl_raw.cast_to_raw(r1.aa);
UTL_smtp.write_raw_data(conn, vrData);

end loop ;

--關閉連線
utl_smtp.close_data(conn);
utl_smtp.quit(conn);

EXCEPTION
WHEN UTL_smtp.transient_error OR UTL_smtp.permanent_error THEN
UTL_smtp.quit(conn);

WHEN OTHERS THEN
UTL_smtp.quit(conn);
NUll;

end ;

END send_mail_html;
/

arrow
arrow
    全站熱搜

    keven 發表在 痞客邦 留言(0) 人氣()