一般不建議數(shù)據(jù)庫(kù)服務(wù)器直接與外部連接。建議用第三方軟件,比如easysqlmail之類的。第一,安全,第二,簡(jiǎn)單。自己集中精力把sql寫好就可以了。望采納。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、玉樹網(wǎng)絡(luò)推廣、小程序開發(fā)、玉樹網(wǎng)絡(luò)營(yíng)銷、玉樹企業(yè)策劃、玉樹品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供玉樹建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
存儲(chǔ)過(guò)程不能發(fā)郵件,郵件可以通過(guò)向表內(nèi)插入數(shù)據(jù),然后通過(guò)數(shù)據(jù)再調(diào)動(dòng)外部程序進(jìn)行發(fā)送。oracle內(nèi)部程序本身沒(méi)有發(fā)送郵件的功能。 現(xiàn)在一般是建立外部流程發(fā)郵件。
你這種情況最合適用事件驅(qū)動(dòng)類提醒服務(wù),了解一下:喵提醒,通過(guò)一個(gè)http請(qǐng)求就可以給你發(fā)手機(jī)信息,支持傳參,還支持短信和語(yǔ)音電話。
Oracle 提供了一個(gè)SendMail的套件: utl_smtp.
可以利用utl_smtp來(lái)在PL/SQL發(fā)送郵件。
utl_smtp相關(guān)函數(shù)以及用法如下所示。
declare
mailhost??VARCHAR2(50)?:=?'XXX.XXX.com';
mail_conn?utl_smtp.connection;??--定義
begin
--?開啟?Mail?Connection
mail_conn?:=?utl_smtp.open_connection(mailhost);
--?建立連接
utl_smtp.helo(mail_conn,?mailhost);
--?設(shè)定發(fā)件者
utl_smtp.mail(mail_conn,?'yun@xxx.com');
--?設(shè)定收件者
utl_smtp.rcpt(mail_conn,?'feng@xxx.com');
--?設(shè)定郵件內(nèi)容
utl_smtp.data(mail_conn,?'Subject:Oracle?Send?Mail?Test'?||?utl_tcp.CRLF?||
'To:feng@xxx.com'?||?utl_tcp.CRLF?||
'Cc:lei@xxx.com'?||?utl_tcp.CRLF?||
'Hello?World!'
);
--?關(guān)閉連接
utl_smtp.quit(mail_conn);
在 Oracle 的運(yùn)維過(guò)程中,常常需要監(jiān)控任務(wù)執(zhí)行情況,這時(shí)候如果用 Java 或 Python 都可以自定義一個(gè)發(fā)郵件提醒的功能,但如果能調(diào)用 Oracle 自帶的的一些包來(lái)實(shí)現(xiàn)郵件提醒,不僅調(diào)用方便,而且提醒的靈活度更高(可以插在存儲(chǔ)過(guò)程的任意一個(gè)犄角旮旯里)。
這里有兩篇文章,詳細(xì)介紹了調(diào)用 Oracle 系統(tǒng)包實(shí)現(xiàn)郵件提醒功能的兩種方法:
我在使用這兩個(gè)包的時(shí)候,遇到了“ORA-24247: 網(wǎng)絡(luò)訪問(wèn)被訪問(wèn)控制列表 (ACL) 拒絕”的報(bào)錯(cuò)。我先檢查了用戶權(quán)限,然后檢查了郵件服務(wù)器的端口權(quán)限,都沒(méi)問(wèn)題,于是在網(wǎng)絡(luò)上搜索答案,原來(lái)真的報(bào)錯(cuò)提示很明顯,就是 ACL 權(quán)限問(wèn)題,不是其他。
于是參照 ORA-24247: 網(wǎng)絡(luò)訪問(wèn)被訪問(wèn)控制列表 (ACL) 拒絕 這篇文章中的方法重新設(shè)置,一調(diào)試,果然可以正常發(fā)郵件了。