日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle utl_smtp,Oracle实时通信:UTL_SMTP包详解

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle utl_smtp,Oracle实时通信:UTL_SMTP包详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建站學院(LieHuo.Net)文檔由于Oracle不提供用于實時輸出消息的工具,Oracle數據庫開發者總是要面臨實時監視他們的儲備過程執行的挑戰。他們必須使用dbms_output.put_line調用,這個調用直到過程完成才返回結果。

在本文中,我想演示如何從Oracle8i數據庫直接發送電子郵件,作為一種實時通信解決方案。這樣我們要監視存儲過程就不再需要等待它們完成了,這樣的方法還為開發者提供了其他的一些好處:

可以在幾分鐘內調試一些很長的批處理過程,而不需要等幾個小時;計算用于指定代碼塊所需的執行時間;

這就需要解決一個問題,我們如何從運行的存儲過程中輸出消息以便我們可以即時檢查它們,即使我們不在辦公場所?我們的做法是把所有必需的過程與函數包裝在自定義的包中,然后使用Oracle8i UTL_SMTP包直接地從Oracle數據庫中發送電子郵件。下面我將詳細講解一些這個過程。

Oracle的UTL_SMTP包

在Oracle8i中引入了UTL_SMTP包(SMTP代表Simple Mail Transfer Protocol簡單郵件傳送協議,使用TCP端口25在客戶機和服務器之間建立通信聯絡),使開發者能夠從數據庫發送電子郵件。

只有安裝帶有Java虛擬機(JVM)的8i或更高的版本才能使用UTL_SMTP。 此外還必須把plsql.jar載入數據庫中。否則,當調用UTL_SMTP API來發送電子郵件的時候我們將得到下面的異常:ORA - 29540 : class oracle/plsql/net/TCPConnection does not exist。

默認的$ORACLE_HOME/javavm/install/initjvm.sql腳本(安裝了JVM)不運行把plsql.jar載入數據庫的initplsj.sql腳本。系統用戶或者內部用戶可以手工運行$ORACLE_HOME/RDBMS/ADMIN/initplsj.sql腳本以解決這個問題。 如果你沒有可用的腳本,你要么可以從Oracle支持那里得到它,要么可以簡單地直接使用loadjava載入實用程序plsql.jar:

loadjava -user sys/password@database -resolve plsql/jlib/plsql.jar

UTL_SMTP API:

本文的代碼中使用了下列UTL_SMTP包中的API:

OPEN_CONNECTION():打開到簡單郵件傳送協議服務器的連接。

HELO():執行連接之后建立與簡單郵件傳送協議服務器初始的收發關系功能,它能識別發送到服務器的“信使”。

MAIL():初始化與服務器的郵件交換,但是事實上不發送消息。

RCPT():識別消息的接受者。為了把一條消息發送到多個接受者,你必須多次調用這個過程。

DATA():指定電子郵件的內容。

QUIT():終止一個SMTP會話并且斷開與服務器的連接。

為了利用應用程序編程接口,把下面的調用按照給定的順序放入程序中:

調用 OPEN_CONNECTION

調用 HELO

調用 MAIL

調用 RCPT for each recipient

格式化電子郵件的內容然后調用MAIL

調用 QUIT

EmailUtils包規范

EmailUtils包包括下列API:

SetSender/GetSender-設置/取得發送者

SetRecipient/GetRecipient -設置/取得接受者

SetCcrecipient/GetCcrecipient -設置/取得抄件接受者

SetMailHost/GetMailHost -設置/取得郵件主機

SetSubject/GetSubject -設置/取得主題

Send-發送郵件

代碼1說明了EmailUtils包的規范:

以下為引用的內容:

create or replace package EmailUtils as

procedure SetSender(pSender in varchar2);

function GetSender

return varchar2;

procedure SetRecipient(pRecipient in varchar2);

function GetRecipient

return varchar2;

procedure SetCcRecipient(pCcRecipient in varchar2);

function GetCcRecipient

return varchar2;

procedure SetMailHost(pMailHost in varchar2);

function GetMailHost

return varchar2;

procedure SetSubject(pSubject in varchar2);

function GetSubject

return varchar2;

procedure Send(pMessage in varchar2);

procedure Send(pSender in varchar2,

pRecipient in varchar2,

pMailHost in varchar2,

pCcRecipient in varchar2 := null,

pSubject in varchar2 := null,

pMessage in varchar2 := null);

end EmailUtils;

/

總結

如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。

本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。

總結

以上是生活随笔為你收集整理的oracle utl_smtp,Oracle实时通信:UTL_SMTP包详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。