從oracle 8i開始,這個數據庫就已經能夠通過utl_smtp工具包發送電子郵件了。它提供的pl/sql工具包實現了rfc所定義的簡單郵件傳輸協議(simple mail transfer protocol,smtp)。
oracle 10g加入了一個新的工具包——utl_mail,它免除了先前的工具包所需要的額外工作。它是對現在仍在使用的utl_smtp外加的一個層。
為了體會一下utl_mail所帶來的便利,現在就讓我們先看一下以前的處理方法。utl_smtp里的函數會模仿電子郵件會話的步驟。首先,它首先用utl_smtp.open_connection函數連接到電子郵件服務器的指定端口上。一旦成功建立連接,多個函數會被按順序調用來與郵件服務器進行通信。utl_smtp.helo過程會通過向服務器發送helo(“hello”)消息建立一個郵件會話。然后utl_stmp.mail會識別發送者的電子郵箱,utl_smtp.rcpt會識別接受者,而utl_smtp.data會發送消息文本。最后進程由utl_smtp.quit來結束。
通過使用utl_mail,這多個函數被合并成了一個叫做utl_mail.send的存儲過程。它的格式是:
utl_mail.send (sender, recipientlist, cc, bcc, subject,
message, mime_type, priority)
recipientlist、cc和bcc參數都是用逗號隔開的接受、抄送和密件抄送人員列表。發送者、主題、消息和mime_type參數都是單個項目字段。上述所有內容都被定義為varchar2。最后一個參數priority是一個用來定義消息優先級別的pls_integer。
這個工具包還帶有兩個處理附件的過程。send_attach_raw和send_attach_varchar2過程與send類似,但是帶有一個額外的參數,用來發送附件的raw或者varchar2類型。
注:在默認情況下,處于安全的考慮utl_mail沒有被配置。你必須以sys的身份連接進行安裝,然后執行$oracle_home/rdbms/admin目錄下的utlmail.sql腳本。此外,你還必須配置一個初始化參數——smtp_out_server,指向一個出站smtp服務器(和utl_stmp不同,它沒有在函數參數里指定,所以必須預定義)。
新聞熱點
疑難解答