校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)

如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)

熱門標簽:地圖標注什么軟件好用 地圖標注百度競價 安陽手機自動外呼系統原理是什么 西藏地圖標注改進點 地圖標注專員入駐 外呼系統線路經常出問題嗎 神行者百貨商場地圖標注 如何辦理400客服電話 外呼系統怎樣才能不封號

大家好,我是只談技術不剪發的 Tony 老師。

我們在開發 Oracle 數據庫程序時,如果想要通過 PL/SQL 存儲過程實現發送郵件的功能,大概可以使用以下三種方法:

  • 利用 UTL_TCP 程序包基于 TCP 協議發送郵件。這種方法比較原始,需要用戶編寫基礎交換代碼。
  • 利用 UTL_SMTP 程序包基于 SMTP 協議發送郵件。這種方法比編碼 TCP 操作簡單很多,支持發送電子郵件的各種操作,因此使用非常廣泛。
  • 利用 UTL_MAIL 程序包發送郵件。這種方法最簡單,支持常用的郵件功能,不需要了解 SMTP 協議。

今天我們要介紹的是第 3 種方法,也就是通過 UTL_MAIL 程序包在 PL/SQL 程序中實現發送郵件的功能。Oracle 10g 開始提供 UTL_MAIL 程序包。

安裝 UTL_MAIL

默認情況下,系統沒有安裝 UTL_MAIL 程序包。因為它需要設置 SMTP_OUT_SERVER 配置參數,同時還會涉及到一些安全問題。

首先,執行以下語句安裝 UTL_MAIL 程序包:

sqlplus sys/pwd>
SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb

然后設置 SMTP_OUT_SERVER 參數:

sqlplus sys/pwd>
SQL> ALTER SYSTEM SET smtp_out_server='smtp.domain.com' SCOPE=SPFILE;

如果使用 Oracle 10g R1,需要重啟服務,更高版本不需要。

建議在數據庫服務器上設置一個郵件轉發,而不是直接連接到外部的郵件服務器。郵件轉發配置非常簡單,設置一個引用 SMTP_OUT_SERVER 參數的 localhost 的配置。任何連接外部郵件服務器的復雜配置都隱藏在郵件轉發配置中。

發送郵件

完成安裝和配置之后,我們可以使用存儲過程 UTL_MAIL.SEND 發送郵件:

UTL_MAIL.SEND (
   sender      IN    VARCHAR2 CHARACTER SET ANY_CS,
   recipients  IN    VARCHAR2 CHARACTER SET ANY_CS,
   cc          IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   bcc         IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   subject     IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   message     IN    VARCHAR2 CHARACTER SET ANY_CS,
   mime_type   IN    VARCHAR2 DEFAULT 'text/plain; charset=us-ascii',
   priority    IN    PLS_INTEGER DEFAULT 3,
   replyto     IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

這些參數的作用如下:

  • SENDER:發送者的郵件地址
  • RECIPIENTS:接收者的郵件地址,多個地址使用逗號分隔
  • CC:抄送者的郵件地址,多個地址使用逗號分隔,默認為 NULL
  • BCC:密送者的郵件地址,多個地址使用逗號分隔,默認為 NULL
  • SUBJECT:郵件主題,默認為 NULL
  • MESSAGE:郵件正文
  • MIME_TYPE:郵件的 MIME 類型,默認為 text/plain; charset=us-ascii
  • PRIORITY:郵件優先級,1 級最高,5 級最低,默認為 3
  • REPLYTO:回復郵件發送的目標地址,Oracle 11g R2 開始支持該參數

以下是一個發送郵件的簡單示例:

BEGIN
  UTL_MAIL.send(sender     => 'myname@domain.com',
                recipients => 'zhangsan@domain.com,lisi@domain.com',
                cc         => 'wangwu@domain.com',
                bcc        => 'myboss@domain.com',
                subject    => 'UTL_MAIL 測試',
                message    => '郵件正文',
                mime_type  => 'text/plain; charset=UTF-8'); -- 支持中文
END;
/

發送附件

除了發送文本郵件之外,UTL_MAIL 程序包還提供了兩個支持附件的存儲過程:SEND_ATTACH_RAW 以及 SEND_ATTACH_VARCHAR2 。它們分別可以用于發送 RAW 以及 VARCHAR2 格式的附件。

UTL_MAIL.SEND_ATTACH_RAW (
   sender           IN    VARCHAR2 CHARACTER SET ANY_CS,
   recipients       IN    VARCHAR2 CHARACTER SET ANY_CS,
   cc               IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   bcc              IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   subject          IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   message          IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   mime_type        IN    VARCHAR2 DEFAULT CHARACTER SET ANY_CS
                              DEFAULT 'text/plain; charset=us-ascii',
   priority         IN    PLS_INTEGER DEFAULT 3,
   attachment       IN    RAW,
   att_inline       IN    BOOLEAN DEFAULT TRUE,
   att_mime_type    IN    VARCHAR2 CHARACTER SET ANY_CS 
                                           DEFAULT 'text/plain; charset=us-ascii',
   att_filename     IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   replyto          IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

UTL_MAIL.SEND_ATTACH_VARCHAR2 (
   sender            IN    VARCHAR2 CHARACTER SET ANY_CS,
   recipients        IN    VARCHAR2 CHARACTER SET ANY_CS,
   cc                IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   bcc               IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   subject           IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   message           IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
   mime_type         IN    VARCHAR2 CHARACTER SET ANY_CS 
                                           DEFAULT 'text/plain; charset=us-ascii',
   priority          IN    PLS_INTEGER DEFAULT 3,
   attachment        IN    VARCHAR2 CHARACTER SET ANY_CS, ,
   att_inline        IN    BOOLEAN DEFAULT TRUE,
   att_mime_type     IN    VARCHAR2 CHARACTER SET ANY_CS 
                                           DEFAULT 'text/plain; charset=us-ascii',
   att_filename      IN    VARCHAR2CHARACTER SET ANY_CS DEFAULT NULL,
   replyto           IN    VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

這兩個存儲過程比 UTL_MAIL.SEND 支持以下額外的參數:

  • ATTACHMENT:附件內容,數據類型為 RAW 或者 VARCHAR2
  • ATT_INLINE:指定附件是否在郵件正文中顯式,默認為 TRUE
  • ATT_MIME_TYPE:附件的 MIME 類型,默認為 ‘application/octet' 或者 ‘text/plain; charset=us-ascii'
  • ATT_FILENAME:附件的文件名,默認為 NULL

以下是一個發送文本附件的示例:

BEGIN
  UTL_MAIL.send(sender     => 'myname@domain.com',
                recipients => 'zhangsan@domain.com,lisi@domain.com',
                cc         => 'wangwu@domain.com',
                bcc        => 'myboss@domain.com',
                subject    => 'UTL_MAIL 測試',
                message    => '郵件正文',
                mime_type  => 'text/plain; charset=UTF-8', -- 支持中文
                attachment => '附件內容',
                att_mime_type => 'text/plain; charset=UTF-8', -- 支持中文
                att_filename => '附件.txt');
END;
/

注意事項

UTL_MAIL 程序包使用調用者權限,也就是說使用該程序的用戶需要擁有訪問外部郵件服務器的權限。

如果遇到以下錯誤,表示缺少相應的權限。

ORA-24247: network access denied by access control list (ACL)

此時我們可以通過以下語句授予指定用戶(例如 scott)訪問外部服務器上的 SMPT 服務權限:

BEGIN;

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
  host => 'www.domain.comm',
  ace  =>  xs$ace_type(privilege_list => xs$name_list('smtp'),
                       principal_name => 'scott',
                       principal_type => xs_acl.ptype_db)); 
END;
/

詳細內容可以參考官方文檔。

到此這篇關于如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)的文章就介紹到這了,更多相關Oracle PL/SQL 發送電子郵件內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Oracle區別ADG與DG案例詳解
  • oracle創建用戶過程詳解
  • Oracle rac案例講解
  • Oracle存儲過程案例詳解
  • Oracle之TO_DATE用法詳解
  • springboot+mybatis-plus+oracle實現邏輯刪除
  • oracle+mybatis-plus+springboot實現分頁查詢的實例
  • Oracle中NEXTVAL案例詳解

標簽:酒泉 張掖 衡水 AXB 阜陽 雞西 貴港 萍鄉

巨人網絡通訊聲明:本文標題《如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)》,本文關鍵詞  如何,使用,Oracle,SQL,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)》相關的同類信息!
  • 本頁收集關于如何使用Oracle PL/SQL 實現發送電子郵件功能(UTL_MAIL)的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品系列在线观看| 中文字幕亚洲区| 欧美亚日韩国产aⅴ精品中极品| 国产精品99久久久久久久vr| 黑人巨大精品欧美一区| 美女精品自拍一二三四| 久久精品国产第一区二区三区| 午夜精品视频在线观看| 亚洲国产精品一区二区久久恐怖片| 亚洲另类色综合网站| 一区二区三区产品免费精品久久75| 亚洲色图在线看| 一区二区在线观看av| 亚洲成人第一页| 日本最新不卡在线| 国产成人精品午夜视频免费| 成人在线综合网| 91国偷自产一区二区开放时间| 色婷婷av一区二区三区软件| 欧美精品vⅰdeose4hd| 欧美日韩精品一区二区三区| 日韩亚洲欧美在线观看| 久久久久国产精品麻豆| 亚洲精品国产精华液| 日韩成人一区二区三区在线观看| 青青草原综合久久大伊人精品优势| 国产乱人伦精品一区二区在线观看| 丰满少妇在线播放bd日韩电影| a级高清视频欧美日韩| 在线影院国内精品| 日韩精品一区在线观看| 中文天堂在线一区| 婷婷综合在线观看| 大桥未久av一区二区三区中文| 99久久国产综合精品色伊 | 欧美日韩中文字幕一区| 日韩你懂的在线观看| 国产精品免费aⅴ片在线观看| 一区二区三区中文在线观看| 久久av老司机精品网站导航| 成人动漫中文字幕| 日韩写真欧美这视频| 国产清纯白嫩初高生在线观看91| 亚洲国产一区二区三区青草影视 | 国产精品91一区二区| 色悠悠久久综合| 久久综合九色综合97婷婷女人| 国产精品视频一二| 蜜桃传媒麻豆第一区在线观看| 在线亚洲高清视频| 国产欧美综合色| 美腿丝袜亚洲色图| 欧美在线播放高清精品| 中文字幕在线观看一区二区| 青娱乐精品视频在线| 欧美在线啊v一区| 中文字幕日韩欧美一区二区三区| 免费不卡在线视频| 欧美一卡2卡三卡4卡5免费| 亚洲女同一区二区| 国产黄色91视频| 精品国产免费一区二区三区香蕉| 午夜视频一区二区| 欧美三区在线视频| 亚洲自拍与偷拍| 国产乱码精品一区二区三区五月婷| 青青草97国产精品免费观看 | 日韩亚洲欧美在线观看| 亚洲成人免费视频| 91搞黄在线观看| 亚洲欧美一区二区视频| 国产不卡免费视频| 欧美精品一区二区精品网| 三级精品在线观看| 欧美日韩一区二区在线观看| 亚洲人成网站影音先锋播放| caoporen国产精品视频| 国产精品国产三级国产a| thepron国产精品| 国产精品久99| 91浏览器在线视频| 亚洲免费观看高清在线观看| 91黄视频在线观看| 亚洲成人av一区二区| 欧美电影在线免费观看| 久久不见久久见免费视频1| 精品国产三级a在线观看| 韩国三级中文字幕hd久久精品| 欧美va日韩va| 国产sm精品调教视频网站| 国产精品情趣视频| 91免费看片在线观看| 亚洲综合丝袜美腿| 欧美肥大bbwbbw高潮| 久久国产精品色| 国产欧美日韩一区二区三区在线观看 | 久久久久88色偷偷免费| 97久久精品人人做人人爽50路| 91在线精品一区二区| 一区二区三区四区不卡在线| 色综合视频一区二区三区高清| 国精产品一区一区三区mba桃花 | 韩国成人精品a∨在线观看| 国产98色在线|日韩| 久久久青草青青国产亚洲免观| 国产精品一区二区免费不卡 | 日韩欧美一级在线播放| 色天使色偷偷av一区二区| 麻豆国产91在线播放| 亚洲一区中文日韩| 久久久久9999亚洲精品| 国产一区二区剧情av在线| 亚洲麻豆国产自偷在线| 国产91清纯白嫩初高中在线观看| 欧美精品日韩一区| 国产91丝袜在线观看| 亚洲色图视频网站| 91网站在线观看视频| 美女一区二区久久| 国产女主播视频一区二区| 亚洲成人你懂的| 欧美美女一区二区在线观看| 床上的激情91.| 精品婷婷伊人一区三区三| 国产精品国产三级国产aⅴ中文| 亚洲色图视频网| 欧美二区在线观看| 精品无码三级在线观看视频 | 91免费看`日韩一区二区| 亚洲视频 欧洲视频| 91精品国产综合久久精品性色 | 日韩午夜精品电影| 卡一卡二国产精品| 久久精品网站免费观看| 国产精品国产三级国产有无不卡 | 欧美精品自拍偷拍| 日韩午夜精品视频| 91天堂素人约啪| 成人一区二区三区视频| 亚洲国产精品成人久久综合一区| 欧美精品在线观看播放| 欧洲精品一区二区| 国产河南妇女毛片精品久久久 | 日韩欧美国产成人一区二区| 不卡视频一二三四| 国产成人aaaa| 欧美亚洲一区二区在线观看| 91在线观看美女| 精品一区二区三区视频| 久久99国产精品免费| 日韩 欧美一区二区三区| 五月天婷婷综合| 日韩中文字幕91| 免费高清视频精品| 麻豆成人久久精品二区三区小说| 欧美a级理论片| 亚洲最快最全在线视频| 色婷婷av一区| 蜜桃av一区二区三区电影| 精品日韩一区二区三区免费视频| 一区二区三区在线观看动漫| 亚洲国产精品影院| 欧美福利视频一区| 欧洲亚洲精品在线| 捆绑紧缚一区二区三区视频 | 制服.丝袜.亚洲.另类.中文| 3atv一区二区三区| 性欧美大战久久久久久久久| 日韩欧美国产午夜精品| 精品国产91九色蝌蚪| 日韩欧美自拍偷拍| 日韩欧美国产一区二区在线播放| 欧美白人最猛性xxxxx69交| 久久久久久日产精品| 天天色综合天天| 日本韩国欧美一区二区三区| 国产精品国产三级国产aⅴ原创| 欧美一区二区三区在线看 | 一区二区三区在线看| 亚洲一区二区五区| 久久久综合网站| 精品国产精品一区二区夜夜嗨| 国产美女精品一区二区三区| 五月激情六月综合| 国产精品99精品久久免费| 久久久午夜精品| 亚洲一区二区在线视频| 国产一区在线看| 日韩精品高清不卡| 一片黄亚洲嫩模| 国产午夜精品一区二区三区嫩草| 亚洲影院在线观看| 亚洲国产高清aⅴ视频| 亚洲sss视频在线视频| 2020日本不卡一区二区视频| 国产精品一级片在线观看| 欧美精品第1页| 一区二区三区不卡视频| 丝袜美腿亚洲色图| 亚洲成人精品一区|