亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

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

2024-08-29 13:52:20
字體:
來源:轉載
供稿:網友
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;

--結束.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美久久久久久| 成人在线观看视频网站| 欧美中文字幕视频| 九九久久国产精品| 欧美裸体xxxx极品少妇| 久久艹在线视频| 成人妇女淫片aaaa视频| 97精品国产97久久久久久免费| www国产亚洲精品久久网站| 欧美一级成年大片在线观看| 欧美在线亚洲一区| 亚洲天堂免费在线| 亚洲桃花岛网站| 国产主播精品在线| 欧美天天综合色影久久精品| 精品香蕉在线观看视频一| 欧美性xxxx极品hd满灌| 欧美中文在线视频| 97久久久久久| 国产精品久久一区主播| 日韩中文字幕在线视频播放| 色综合色综合久久综合频道88| 亚洲天堂第一页| 亚洲乱码国产乱码精品精天堂| 国产成人综合av| 一个色综合导航| 久久久久久久久中文字幕| 成人久久久久久| 中文字幕日韩免费视频| 成人h视频在线观看播放| 日本精品一区二区三区在线播放视频| 国产精品免费观看在线| 亚洲国产第一页| 日韩av影视综合网| 成人激情视频在线播放| 欧美日韩国内自拍| 久久久999成人| 国产精品第一区| 亚洲国产一区自拍| 欧美黄网免费在线观看| 精品国产乱码久久久久酒店| 性金发美女69hd大尺寸| 亚洲理论片在线观看| 最近2019中文字幕第三页视频| 国产精品丝袜久久久久久高清| 亚洲精品久久久久| 俺去了亚洲欧美日韩| 亚洲综合av影视| 欧美亚洲在线观看| 庆余年2免费日韩剧观看大牛| 国产精品揄拍一区二区| 久99久在线视频| 最近2019年日本中文免费字幕| 欧美在线视频在线播放完整版免费观看| 欧美在线观看www| 91久久久在线| 欧美精品福利视频| 国产一区二区三区中文| 亚洲黄色av网站| 欧美激情欧美狂野欧美精品| 亚洲成人精品久久| 91影视免费在线观看| 国产精品欧美激情在线播放| 日韩欧美中文字幕在线播放| 欧美人在线观看| 992tv成人免费视频| 国产99久久精品一区二区永久免费| 91人人爽人人爽人人精88v| 国产99久久精品一区二区| 欧美日韩一区二区免费视频| 国产精品人人做人人爽| 欧美日韩美女视频| 91在线观看免费网站| 亚洲一区二区黄| 97成人在线视频| 精品亚洲一区二区三区四区五区| 久久人人看视频| 91理论片午午论夜理片久久| 国产精品扒开腿做爽爽爽的视频| 91免费视频网站| 亚洲国产成人爱av在线播放| 色婷婷亚洲mv天堂mv在影片| 国产精品69久久| 成人免费网站在线观看| 国产精品狠色婷| 97在线日本国产| 久久网福利资源网站| 一个人www欧美| 国产一区二区三区视频在线观看| 97香蕉久久超级碰碰高清版| 97人人模人人爽人人喊中文字| 国产午夜精品一区理论片飘花| 裸体女人亚洲精品一区| 欧美性黄网官网| 亚洲精品日韩在线| 91国产精品视频在线| 欧美日韩国产一区在线| 国产精品一区二区三区免费视频| 国内揄拍国内精品| 一个色综合导航| 亚洲激情在线观看| 亚洲淫片在线视频| 日本韩国在线不卡| 亚洲一区免费网站| 欧美在线不卡区| 久久综合88中文色鬼| 亚洲国产99精品国自产| 91精品国产综合久久香蕉的用户体验| 午夜精品视频在线| 国产日产久久高清欧美一区| 色与欲影视天天看综合网| 国产精品亚洲美女av网站| 国产精品高潮呻吟久久av无限| 伊人伊成久久人综合网小说| 日韩精品免费综合视频在线播放| 色多多国产成人永久免费网站| 欧美日韩第一页| 日韩国产在线播放| 国产亚洲成精品久久| 亚洲成人网在线| 欧美理论在线观看| 欧美激情一区二区三级高清视频| 国产精品自产拍在线观看中文| 亚洲欧美www| 国产精品678| 亚洲成人在线视频播放| 九九久久综合网站| 国产日韩精品在线观看| 激情成人中文字幕| 91国偷自产一区二区三区的观看方式| 久久久精品国产一区二区| 欧美亚洲成人网| 亚洲国产精品人久久电影| 在线亚洲国产精品网| 国内精久久久久久久久久人| 91九色蝌蚪国产| 欧美日韩免费在线观看| 国产精品久久久久77777| 亚洲欧美在线磁力| 精品一区二区三区电影| 97精品视频在线观看| 日韩中文字幕久久| 国产精品免费电影| 欧美日韩精品在线播放| 欧美肥老太性生活视频| 久久av资源网站| 久久99国产精品久久久久久久久| 丝袜美腿精品国产二区| 亚洲精品免费av| 日韩免费视频在线观看| 在线性视频日韩欧美| 91av在线网站| 亚洲精品国产suv| 成人淫片在线看| 高清欧美性猛交| 亚洲风情亚aⅴ在线发布| 久久久精品视频在线观看| 国产亚洲欧洲高清一区| 在线免费看av不卡| 成人激情免费在线| 日本精品视频网站| 色午夜这里只有精品| 亚洲欧洲美洲在线综合| 欧美日本中文字幕|