亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

實(shí)例講解如何通過Oracle成功發(fā)送郵件

瀏覽:100日期:2023-11-27 12:25:19
LINUX AS3+Oracle 9.2||10.20.1從Oracle成功發(fā)送郵件:

示例如下:

具體的測(cè)試環(huán)境:LINUX AS3 , Oracle 9.0.2.4

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

PL/SQL Release 9.2.0.4.0 - Production

CORE 9.2.0.3.0 Production

TNS for Linux: Version 9.2.0.4.0 - Production

NLSRTL Version 9.2.0.4.0 - Production

SQL> select * from v$version;

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE 10.2.0.1.0 Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

MAIL服務(wù)器為WIN2003,WINMAIL

1.保證ORACLE服務(wù)器到MAIL服務(wù)器網(wǎng)絡(luò)暢通,25端口打開

2.創(chuàng)建發(fā)送郵件的procedure如下:

---------------------------------------

CREATE OR REPLACE PROCEDURE SEND_MAIL

(as_sender in varchar2, --郵件發(fā)送者

as_recp in varchar2, --郵件接收者

as_subject in varchar2, --郵件標(biāo)題

as_msg_body in varchar2) --郵件內(nèi)容

IS

ls_mailhost varchar2(30) := 'mail server'; -- address or IP

lc_mail_conn utl_smtp.connection;

ls_subject varchar2(100);

ls_msg_body varchar2(20000);

ls_username varchar2(256) := 'usercode';

ls_password varchar2(256) := 'password';

BEGIN

lc_mail_conn := utl_smtp.open_connection(ls_mailhost, 25);

utl_smtp.helo(lc_mail_conn, ls_mailhost);

utl_smtp.command(lc_mail_conn, 'AUTH LOGIN');

utl_smtp.command(lc_mail_conn, demo_base64.encode(utl_raw.cast_to_raw(ls_username)));

utl_smtp.command(lc_mail_conn, demo_base64.encode(utl_raw.cast_to_raw(ls_password)));

ls_subject := 'Subject: [' || upper(sys_context('userenv', 'db_name')) || '] - ' || as_subject;

ls_msg_body := as_msg_body;

utl_smtp.mail(lc_mail_conn, '<'||as_sender||'>'); --這里的'<' 一定要寫,不然會(huì)出現(xiàn)permanent error

utl_smtp.rcpt(lc_mail_conn, '<'||as_recp||'>');--這里的'<' 一定要寫,不然會(huì)出現(xiàn)permanent error

utl_smtp.open_data(lc_mail_conn);

ls_msg_body := 'From: ' || as_sender || chr(13) || chr(10) || 'To: ' || as_recp || chr(13) || chr(10) || ls_subject ||

chr(13) || chr(10) || chr(13) || chr(10) || ls_msg_body;

utl_smtp.write_raw_data(lc_mail_conn, utl_raw.cast_to_raw(ls_msg_body)); --這樣寫subject可以支持中文但body內(nèi)容不支持中文;

-- utl_smtp.write_data(lc_mail_conn, ls_msg_body); --這樣寫subject不支持中文

utl_smtp.close_data(lc_mail_conn);

utl_smtp.quit(lc_mail_conn);

EXCEPTION

WHEN UTL_SMTP.INVALID_OPERATION THEN

dbms_output.put_line('invalid operation');

WHEN UTL_SMTP.TRANSIENT_ERROR THEN

dbms_output.put_line('transient error');

WHEN UTL_SMTP.PERMANENT_ERROR THEN

dbms_output.put_line('permanent error');

WHEN OTHERS THEN

dbms_output.put_line('others');

end send_mail;

3.執(zhí)行發(fā)送郵件:

exec send_mail('heyu@163.net','admin@163.net','我我','this is a oracle test mail');

注意事項(xiàng):上面的過程如果在編譯中出現(xiàn)demo_base64.encode must be declared,請(qǐng)大家創(chuàng)建下面的包和包體;

---------------------------------

CREATE OR REPLACE PACKAGE demo_base64 IS

-- Base64-encode a piece of binary data.

--

-- Note that this encode function does not split the encoded text into

-- multiple lines with no more than 76 bytes each as required by

-- the MIME standard.

--

FUNCTION encode(r IN RAW) RETURN VARCHAR2;

END;

------------------------------------

CREATE OR REPLACE PACKAGE BODY demo_base64 IS

TYPE vc2_table IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;

map vc2_table;

-- Initialize the Base64 mapping

PROCEDURE init_map IS

BEGIN

map(0) :='A'; map(1) :='B'; map(2) :='C'; map(3) :='D'; map(4) :='E';

map(5) :='F'; map(6) :='G'; map(7) :='H'; map(8) :='I'; map(9):='J';

map(10):='K'; map(11):='L'; map(12):='M'; map(13):='N'; map(14):='O';

map(15):='P'; map(16):='Q'; map(17):='R'; map(18):='S'; map(19):='T';

map(20):='U'; map(21):='V'; map(22):='W'; map(23):='X'; map(24):='Y';

map(25):='Z'; map(26):='a'; map(27):='b'; map(28):='c'; map(29):='d';

map(30):='e'; map(31):='f'; map(32):='g'; map(33):='h'; map(34):='i';

map(35):='j'; map(36):='k'; map(37):='l'; map(38):='m'; map(39):='n';

map(40):='o'; map(41):='p'; map(42):='q'; map(43):='r'; map(44):='s';

map(45):='t'; map(46):='u'; map(47):='v'; map(48):='w'; map(49):='x';

map(50):='y'; map(51):='z'; map(52):='0'; map(53):='1'; map(54):='2';

map(55):='3'; map(56):='4'; map(57):='5'; map(58):='6'; map(59):='7';

map(60):='8'; map(61):='9'; map(62):='+'; map(63):='/';

END;

FUNCTION encode(r IN RAW) RETURN VARCHAR2 IS

i pls_integer;

x pls_integer;

y pls_integer;

v VARCHAR2(32767);

BEGIN

-- For every 3 bytes, split them into 4 6-bit units and map them to

-- the Base64 characters

i := 1;

WHILE ( i + 2 <= utl_raw.length(r) ) LOOP

x := to_number(utl_raw.substr(r, i, 1), '0X') * 65536 +

to_number(utl_raw.substr(r, i + 1, 1), '0X') * 256 +

to_number(utl_raw.substr(r, i + 2, 1), '0X');

y := floor(x / 262144); v := v || map(y); x := x - y * 262144;

y := floor(x / 4096); v := v || map(y); x := x - y * 4096;

y := floor(x / 64); v := v || map(y); x := x - y * 64;

v := v || map(x);

i := i + 3;

END LOOP;

-- Process the remaining bytes that has fewer than 3 bytes.

IF ( utl_raw.length(r) - i = 0) THEN

x := to_number(utl_raw.substr(r, i, 1), '0X');

y := floor(x / 4); v := v || map(y); x := x - y * 4;

x := x * 16; v := v || map(x);

v := v || '==';

ELSIF ( utl_raw.length(r) - i = 1) THEN

x := to_number(utl_raw.substr(r, i, 1), '0X') * 256 +

to_number(utl_raw.substr(r, i + 1, 1), '0X');

y := floor(x / 1024); v := v || map(y); x := x - y * 1024;

y := floor(x / 16); v := v || map(y); x := x - y * 16;

x := x * 4; v := v || map(x);

v := v || '=';

END IF;

RETURN v;

END;

BEGIN

init_map;

END;

--結(jié)束.

標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 在线精品视频在线观看高清 | 免费在线观看一级片 | 成人福利热舞hd | 妞干网在线观看视频 | 黄色欧美| 夭天色综合 | 一级片网 | 国产在线观看网址在线视频 | 中文在线日本免费永久18近 | jizjizjiz亚洲大全 | 黄色一级片播放 | 亚洲国产一区二区三区综合片 | 亚欧精品一区二区三区 | 免费黄网站在线看 | 三级国产在线观看 | 午夜激情免费 | 免费国产一区二区在免费观看 | 本道久久| a级毛片在线视频免费观看 a级毛片在线播放 | 国产大片91精品免费观看男同 | 九九在线视频 | 成人在线不卡 | 国产亚洲新品一区二区 | 国产高清资源 | 在线观看永久免费 | 欧美成人香蕉网在线观看 | 亚洲欧美一区二区三区九九九 | 欧美一区二区精品系列在线观看 | 亚欧综合 | 欧美日韩中文字幕一区二区高清 | a级做爰毛片视频免费看 | 99ri精品国产亚洲 | 黄色国产一级片 | 免费大黄网站在线观看 | 国产一区免费在线观看 | 欧美国产亚洲精品a第一页 欧美国产亚洲一区 | 日韩免费一级a毛片在线播放一级 | 污污小视频在线观看 | 自偷自偷自亚洲首页精品 | 国产精品1区2区3区在线播放 | 亚洲国产日韩在线人高清不卡 |