一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Oracle - 利用Oracle數(shù)據(jù)庫(kù)發(fā)送郵件的實(shí)例代碼

利用Oracle數(shù)據(jù)庫(kù)發(fā)送郵件的實(shí)例代碼

2019-12-30 15:05samwolf911 Oracle

本文給大家利用oracle數(shù)據(jù)庫(kù)發(fā)送郵件的實(shí)例,代碼簡(jiǎn)單易懂,試用性非常高,對(duì)此文感興趣的朋友一起學(xué)習(xí)吧

--發(fā)送郵件的主過(guò)程如下所述:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Procedure send_mail_ (p_From Varchar2, --郵件發(fā)送人
p_Fromuser Varchar2, --發(fā)件人昵稱(chēng)
p_Touser Varchar2, --接受人昵稱(chēng)
p_To Varchar2, --郵件接收人
p_Cc Varchar2, --郵件抄送人
p_Subject Varchar2, --郵件標(biāo)題
p_Message Varchar2, --郵件內(nèi)容
p_User Varchar2, --郵件驗(yàn)證用戶(hù)
p_Mailhost VARCHAR2, --郵件的服務(wù)地址
p_Psd Varchar2 --郵件驗(yàn)證密碼
) IS
v_Conn Utl_Smtp.Connection; --到郵件服務(wù)器的連接
v_Msg Varchar2(32700); --郵件內(nèi)容
Psrc Varchar2(4000);
Psrc1 Varchar2(4000);
v_Touser1 VARCHAR2(4000);
v_Touser VARCHAR2(500);
v_To Varchar2(500);
i Number := 1;
j Number := 1;
m Number := 1;
n Number := 1;
str_error VARCHAR2(20000);
BEGIN
v_Touser1 := '';
v_Conn := Utl_Smtp.Open_Connection(p_Mailhost, 25);
Utl_Smtp.Ehlo(v_Conn, p_Mailhost); -- 是用 ehlo() 而不是 helo() 函數(shù)否則會(huì)報(bào):ORA-29279: SMTP 永久性錯(cuò)誤: 503 5.5.2 Send hello first.
Utl_Smtp.Command(v_Conn, 'AUTH LOGIN'); -- smtp服務(wù)器登錄校驗(yàn)
Utl_Smtp.Command(v_Conn, Utl_Raw.Cast_To_Varchar2(Utl_Encode.Base64_Encode(Utl_Raw.Cast_To_Raw(p_User))));
Utl_Smtp.Command(v_Conn, Utl_Raw.Cast_To_Varchar2(Utl_Encode.Base64_Encode(Utl_Raw.Cast_To_Raw(p_Psd ))));
Utl_Smtp.Mail (v_Conn, '<' || p_From || '>'); --設(shè)置發(fā)件人
-- 設(shè)置收件人----------------
Psrc := Rtrim(Ltrim(p_To , ';'), ';') || ';';
Psrc1 := Rtrim(Ltrim(p_Touser, ';'), ';') || ';';
IF Nvl(Instr(Psrc, ';', j), 0)>0 THEN
LOOP
i := Nvl(Instr(Psrc , ';', j), 0);
m := Nvl(Instr(Psrc1, ';', n), 0);
If i > 0 THEN
v_To := Trim(Substr(Psrc , j, i - j));
v_Touser := nvl(Trim(Substr(Psrc1, n, m - n)),'1');
Utl_Smtp.Rcpt(v_Conn, v_To); --設(shè)置收件人
IF v_Touser = '1' THEN
v_Touser := trim(SUBSTR(v_To,1,Instr(v_To,'@')-1));
END IF;
IF j = 1 THEN
v_Touser1 := v_Touser1 || v_Touser || '<' || v_To || '>';
ELSE
v_Touser1 := v_Touser1 || ';'|| v_Touser || '<' || v_To || '>';
END IF;
j := i + 1;
n := m + 1;
END IF;
Exit When i = 0;
END LOOP;
ELSE
Utl_Smtp.Rcpt(v_Conn, p_To); --設(shè)置收件人
v_Touser1 := v_Touser1 || p_Touser || '<' || p_To || '>';
END IF;
-- 設(shè)置抄送人----------------
i := 1;
j := 1;
IF nvl(p_Cc,'aa')<>'aa' THEN
Psrc := Rtrim(Ltrim(p_Cc, ';'), ';')|| ';';
IF Nvl(Instr(Psrc, ';', j), 0)>0 THEN
LOOP
i := Nvl(Instr(Psrc, ';', j), 0);
If i > 0 THEN
v_To := Trim(Substr(Psrc, j, i - j));
j := i + 1;
Utl_Smtp.Rcpt(v_Conn, v_To); --設(shè)置抄送人
END IF;
Exit When i = 0;
END LOOP;
ELSE
IF nvl(p_Cc,'1') <> '1' THEN
Utl_Smtp.Rcpt(v_Conn, p_Cc); --設(shè)置抄送人
END IF;
END IF;
END IF;
-- 創(chuàng)建要發(fā)送的郵件內(nèi)容注意報(bào)頭信息和郵件正文之間要空一行
v_Msg := 'Date: ' || To_Char(Sysdate, 'dd mon yy hh24:mi:ss') || Utl_Tcp.Crlf ||
'From: ' || p_Fromuser || '<' || p_From || '>' || Utl_Tcp.Crlf ||
'To: ' || v_Touser1 || Utl_Tcp.Crlf ||
'Cc: ' || p_Cc || Utl_Tcp.Crlf ||
'Subject: ' || p_Subject || Utl_Tcp.Crlf ||
Utl_Tcp.Crlf -- 這前面是報(bào)頭信息
|| p_Message; -- 這個(gè)是郵件正文
Utl_Smtp.Open_Data(v_Conn); --打開(kāi)流
Utl_Smtp.Write_Raw_Data(v_Conn,Utl_Raw.Cast_To_Raw(Convert('Content-Type:text/html;charset=utf-8' ||
v_Msg, 'ZHS16GBK'))); --這樣寫(xiě)標(biāo)題和內(nèi)容都能用中文
Utl_Smtp.Close_Data(v_Conn); --關(guān)閉流
Utl_Smtp.Quit(v_Conn); --關(guān)閉連接
Exception
When Others THEN
str_error := Dbms_Utility.Format_Error_Stack || Dbms_Utility.Format_Call_Stack;
Dbms_Output.Put_Line(str_error);
END;

以上所述是小編給大家?guī)?lái)的利用Oracle數(shù)據(jù)庫(kù)發(fā)送郵件的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的,在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/samwolf911/archive/2016/09/02/5833199.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品永久免费10000 | 国产成人精品一区二区仙踪林 | 国产成人成人一区二区 | 国内精品91最新在线观看 | 亚洲高清中文字幕一区二区三区 | 国产青草亚洲香蕉精品久久 | 好大好猛好深好爽视频 | 成年人福利 | 小柔的性放荡羞辱日记 | 俄罗斯一级淫片 | 亚洲AV 中文字幕 国产 欧美 | 久久综久久美利坚合众国 | 欧美洲大黑香蕉在线视频 | 午夜久久免费视频 | 国产成人一区二区三区小说 | 国产精品乱码高清在线观看 | 国产精品99久久 | 色综合久久日韩国产 | 视频在线观看大片 | 情缘1完整版在线观看 | 唯美清纯 自拍偷 | 男人天堂影院 | 精品一区二区三区免费观看 | 国产精品视频一区二区三区w | 羲义嫁密着中出交尾gvg794 | 爱操综合网 | 丁香网五月天 | 久久永久免费视频 | 我把寡妇日出水好爽 | 久久精品热在线观看30 | 精品国产综合区久久久久久 | chinese男同志同性twink | 91韩国女主播 | www在线观看视频免费 | 人人看人人射 | 欧美日韩成人在线视频 | 日韩国产成人精品视频 | 青柠影视在线播放观看高清 | 91东航翘臀女神在线播放 | 亚洲第6页 | 久久精品国产清白在天天线 |