成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

實例講解如何通過Oracle成功發送郵件

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

示例如下:

具體的測試環境: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服務器為WIN2003,WINMAIL

1.保證ORACLE服務器到MAIL服務器網絡暢通,25端口打開

2.創建發送郵件的procedure如下:

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

CREATE OR REPLACE PROCEDURE SEND_MAIL

(as_sender in varchar2, --郵件發送者

as_recp in varchar2, --郵件接收者

as_subject in varchar2, --郵件標題

as_msg_body in varchar2) --郵件內容

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||'>'); --這里的'<' 一定要寫,不然會出現permanent error

utl_smtp.rcpt(lc_mail_conn, '<'||as_recp||'>');--這里的'<' 一定要寫,不然會出現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內容不支持中文;

-- 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.執行發送郵件:

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

注意事項:上面的過程如果在編譯中出現demo_base64.encode must be declared,請大家創建下面的包和包體;

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

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;

--結束.

標簽: Oracle 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线亚洲高清视频| 99视频日韩| 懂色一区二区三区免费观看| 久久久亚洲欧洲日产国码αv| 欧美久久一区| 91麻豆swag| 中文字幕免费在线观看视频一区| 欧美一区二区三区播放老司机| 青娱乐精品视频| 亚洲欧美激情在线| 亚洲午夜伦理| 欧美影院一区二区| 国产精品免费久久久久| 国产精品亚洲一区二区三区妖精| 亚久久调教视频| 亚洲自拍偷拍欧美| 欧美激情中文字幕| 国内外成人在线视频| 精品91自产拍在线观看一区| 亚洲专区欧美专区| 亚洲一二三区不卡| 国产欧美日韩激情| 国产精品国产自产拍在线| 91看片淫黄大片一级在线观看| 欧美成人一区二区三区| 风流少妇一区二区| 精品久久一区二区| 欧美国产三级| 国产日韩欧美不卡| 极品少妇一区二区三区| 亚洲免费色视频| 亚洲综合精品| 麻豆视频一区二区| 欧美1区免费| 中文字幕一区二区在线观看| 在线亚洲精品| 日本女人一区二区三区| 欧美人牲a欧美精品| 成人免费视频视频在线观看免费| 久久久久免费观看| 伊人久久成人| 日韩黄色免费电影| 337p亚洲精品色噜噜狠狠| 成人短视频下载| 国产精品国产三级国产| 国产一区欧美日韩| 久久久三级国产网站| 中文字幕不卡在线| 亚洲国产精品成人久久综合一区| 久久久激情视频| 亚洲欧洲韩国日本视频| 亚洲一区免费在线观看| 日产精品久久久久久久性色| 美女任你摸久久| 国产一区二区三区四区在线观看 | 中文字幕欧美三区| 日韩精品一区二区三区三区免费| 日韩精品一区国产麻豆| 国产精品网站在线观看| 亚洲亚洲人成综合网络| 久久不见久久见免费视频1| 国产精品综合在线视频| 91美女片黄在线观看| 亚洲欧洲日本国产| 榴莲视频成人在线观看| 69p69国产精品| 欧美精品一区男女天堂| 亚洲精品视频在线| 看国产成人h片视频| 成人黄色小视频| 狠狠入ady亚洲精品经典电影| av成人国产| 欧美精品第1页| 国产精品久久影院| 日韩精彩视频在线观看| 成人avav影音| 国产精品一区二区a| 欧美精品丝袜中出| 国产喂奶挤奶一区二区三区| 天天综合网天天综合色| gogo大胆日本视频一区| 亚洲一区二区三区四区五区午夜| 4438亚洲最大| 亚洲欧洲三级电影| 亚洲二区视频在线| 不卡的av网站| 亚洲欧美久久久久一区二区三区| 欧美电影一区二区三区| 亚洲欧美日本在线| 国产精品资源网站| 亚洲欧美日韩在线观看a三区| 91麻豆精品91久久久久同性| 一区二区三区精品在线| 97精品国产露脸对白| 在线精品视频免费观看| 国产精品久久久久一区二区三区| 激情亚洲综合在线| 亚洲在线电影| 日本一区二区三级电影在线观看| 日韩制服丝袜av| 在线 亚洲欧美在线综合一区| 欧美伊人久久大香线蕉综合69| 中文字幕一区二区三区av| 福利视频网站一区二区三区| 色噜噜狠狠成人中文综合| 中文字幕人成不卡一区| av高清久久久| 欧美一区二区三区视频在线 | 精品一区在线看| 国产自产在线视频一区| 制服丝袜av成人在线看| 天天综合天天综合色| 亚洲手机在线| 欧美极品少妇xxxxⅹ高跟鞋| 久久电影网电视剧免费观看| 午夜在线a亚洲v天堂网2018| 综合色中文字幕| 色综合欧美在线视频区| 欧美一级高清片在线观看| 美女网站在线免费欧美精品| 久久精品91| 午夜精品国产更新| 国产欧美综合一区二区三区| 欧美怡红院视频| 白白色 亚洲乱淫| 九九**精品视频免费播放| 亚洲久草在线视频| 国产色产综合色产在线视频| 7777精品伊人久久久大香线蕉的 | 国产一区亚洲一区| 久久久久国产精品一区三寸| 亚洲激情中文1区| 1024精品一区二区三区| 26uuu国产一区二区三区| 在线欧美日韩| 国内外精品视频| 日韩av电影免费观看高清完整版 | 图片区小说区区亚洲影院| 中文字幕一区二区三区蜜月| 久久这里只有精品6| 91精品国模一区二区三区| 欧美日韩一区小说| 中文字幕一区二区三区在线播放 | 欧美mv日韩mv国产网站app| 国产一区不卡精品| 日韩精品一区二区在线观看| 91在线视频网址| 国产精品免费免费| 国产亚洲亚洲| 麻豆精品一区二区综合av| 精品视频全国免费看| 国产a级毛片一区| 久久影音资源网| 91久久夜色精品国产九色| 午夜精品一区二区三区免费视频| 色综合久久久久综合体| 麻豆freexxxx性91精品| 欧美一二三区在线| 精品福利电影| 日韩在线卡一卡二| 欧美三级蜜桃2在线观看| 成人手机电影网| 亚洲日韩欧美一区二区在线| 色婷婷综合五月| 不卡的电视剧免费网站有什么| 亚洲欧洲99久久| 欧美在线播放高清精品| 91丨porny丨最新| 亚洲午夜免费福利视频| 欧美一二三区精品| 亚洲大黄网站| 麻豆一区二区三| 久久精品一区二区三区不卡 | 欧美三电影在线| 91在线精品秘密一区二区| 亚洲欧美日韩中文播放| 色88888久久久久久影院野外| 成人免费毛片高清视频| 亚洲一区二区视频在线观看| 日韩一区二区三区在线视频| 亚洲高清在线播放| 激情综合色丁香一区二区| 亚洲国产精品黑人久久久| 久久一区亚洲| 欧美大片一区| 美女视频一区二区三区| 国产精品女同一区二区三区| 欧美亚洲国产一区在线观看网站| 欧美精品日本| 久久国产日韩欧美精品| 国产精品久久久久久久久果冻传媒 | 成人一区二区在线观看| 亚洲欧美另类图片小说| 欧美一区二区三区在| 亚洲精品一二| 99国产精品久久| 国内精品国产成人| 亚洲国产日韩综合久久精品| 中文字幕不卡在线| 日韩欧美资源站|