成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_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久久| 国产99久久久国产精品潘金 | 国产美女一区二区| 欧美午夜精品一区二区三区| 日韩国产欧美一区二区三区| 久久久久久亚洲精品杨幂换脸 | 国产午夜精品一区二区| 91在线观看一区二区| 久久免费精品国产久精品久久久久| 97se狠狠狠综合亚洲狠狠| 欧美精品一区二区不卡| 99国产精品久| 中文无字幕一区二区三区| 日韩一区二区电影| 91尤物视频在线观看| 国产精品久久毛片a| 亚洲视频碰碰| 亚洲美女在线一区| 免费日韩av片| 蜜臀av性久久久久蜜臀aⅴ| 欧美色图12p| 狠狠色狠狠色综合| 日韩欧美一二区| 波多野结衣中文字幕一区二区三区 | 在线播放视频一区| 国产大陆亚洲精品国产| 欧美电影免费观看高清完整版在线观看 | 国产精品xnxxcom| 18成人在线视频| 国产偷国产偷亚洲高清97cao| 亚洲bdsm女犯bdsm网站| 色哦色哦哦色天天综合| 精品影视av免费| 日韩一区二区高清| 欧美日韩一区二区三区在线观看免 | 欧美美女bb生活片| www.欧美日韩| 国产精品丝袜久久久久久app| 精品成人免费| 午夜久久久影院| 欧美三级一区二区| 成人app在线观看| 日本一区二区成人在线| 91久久久久| 日韩电影在线免费观看| 在线91免费看| 欧美另类视频在线| 亚洲高清一区二区三区| 欧美久久一区二区| 91蝌蚪国产九色| 亚洲一区二区三区小说| 欧美亚洲愉拍一区二区| 成人中文字幕在线| 自拍偷自拍亚洲精品播放| 色哟哟欧美精品| 成人午夜av在线| **欧美大码日韩| 一本久久a久久免费精品不卡| 国产成人精品免费网站| 国产精品国产a级| 在线亚洲人成电影网站色www| 不卡的看片网站| 亚洲欧美日韩综合aⅴ视频| 91久久线看在观草草青青| 成人午夜在线视频| 亚洲精品中文在线| 欧美日本一区二区三区四区| 欧美日韩一区二区国产| 日本 国产 欧美色综合| 亚洲精品一区在线观看| 国产精品主播| 懂色中文一区二区在线播放| 亚洲你懂的在线视频| 欧美性猛交xxxx黑人交| 欧美黄污视频| 青草国产精品久久久久久| 久久久五月婷婷| 美女成人午夜| www.成人网.com| 视频一区中文字幕| 国产亚洲欧洲一区高清在线观看| 六月婷婷一区| 91一区二区在线| 日韩av网站在线观看| 久久久亚洲国产美女国产盗摄| 香蕉久久国产| aaa国产一区| 午夜精品久久久久影视| 日韩欧美黄色影院| 免费日韩av| 午夜精品短视频| 久久 天天综合| 亚洲欧美日韩久久精品| 日韩一二在线观看| 免费国产自线拍一欧美视频| www.亚洲激情.com| 秋霞成人午夜伦在线观看| 国产精品久久毛片av大全日韩| 欧美日韩国产小视频在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 国产激情一区二区三区桃花岛亚洲| 亚洲靠逼com| 精品欧美乱码久久久久久| 亚洲欧美日韩精品在线| 欧美一区二区三区久久精品茉莉花 | 日韩三级电影网址| 亚洲一区欧美二区| 欧美一区二区三区在线播放| 免费看日韩精品| 亚洲欧洲中文日韩久久av乱码| 欧美成人女星排行榜| 在线视频中文字幕一区二区| 亚洲久色影视| 你懂的国产精品| 国产传媒一区在线| 亚洲午夜电影网| 国产精品三级在线观看| 欧美一级黄色片| 色视频成人在线观看免| 一区二区福利| 欧美精品一线| 成人午夜精品在线| 黑人精品欧美一区二区蜜桃| 亚洲成人在线免费| 国产精品乱码人人做人人爱| 91精品国产麻豆| 在线观看视频一区| 国产欧美日韩伦理| 国模吧视频一区| 91免费视频网| 国产传媒一区在线| 青椒成人免费视频| 亚洲国产成人精品视频| 亚洲欧洲国产日韩| 久久精品亚洲一区二区三区浴池| 91精品欧美福利在线观看| 91黄视频在线| 午夜亚洲视频| 日韩亚洲视频| 黄色日韩精品| 欧美另类专区| 91在线码无精品| 成人免费看黄yyy456| 国产麻豆精品在线观看| 久久av中文字幕片| 蜜桃久久久久久| 午夜精品影院在线观看| 夜夜嗨av一区二区三区四季av| 中文字幕亚洲区| 国产精品第13页| 亚洲国产精品99久久久久久久久| 久久久久亚洲蜜桃| www国产精品av| 精品国产91亚洲一区二区三区婷婷 | 亚洲国产精品第一区二区三区| 欧美精品国产一区| 色综合欧美在线视频区| 成人黄色国产精品网站大全在线免费观看| 蜜臀av一区二区三区| 日本成人超碰在线观看| 石原莉奈在线亚洲三区| 亚洲国产成人高清精品| 亚洲一区二区三区四区在线免费观看 | 国产三级精品在线不卡| 午夜视频一区| 欧美激情第六页| 欧美黄色精品| 亚洲视频欧美在线| 亚洲高清激情| 一区二区免费在线视频| 国产精品午夜av在线| 国产伦精品一区二区三区视频孕妇 | 成人黄色a**站在线观看| 国产91精品久久久久久久网曝门 | 不卡一区二区三区四区| 高清久久久久久| 成人永久免费视频| 99精品视频在线免费观看| 欧美成人一区二免费视频软件| 欧美日韩专区| 日韩午夜激情| 久久狠狠久久综合桃花| 在线欧美日韩国产| 777亚洲妇女| 精品国产3级a| 国产欧美日韩视频一区二区| 国产精品久久99| 亚洲男人电影天堂| 亚洲成人激情av| 91国产成人在线| 欧美精品久久天天躁| 精品国产91乱码一区二区三区| 欧美激情在线看| 亚洲在线一区二区三区| 蜜臀久久久99精品久久久久久| 狠狠色丁香九九婷婷综合五月| 丁香一区二区三区|