首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle UTL_SMTP 發送郵件完整範例:支援中文、HTML、多收件人

     編輯:Oracle 資料庫基礎

核心存儲過程 bsd_sendemail

參數:p_receiver(多地址逗號分隔)、p_sub(主題)、p_txt(HTML 正文)。

關鍵技術點:

  • UTL_SMTP 建立 SMTP 連接,支援 AUTH LOGIN 認證(Base64 編碼用戶/密)。
  • MIME 多部件結構:multipart/mixed + Boundary 分隔。
  • 中文主題:=?GB2312?B??= 格式編碼。
  • 正文編碼:UTL_RAW.CAST_TO_RAW(CONVERT(..., 'ZHS16CGB231280')) 解決亂碼。
  • 換行符統一轉換為 UTL_TCP.CRLF。

完整代碼結構

CREATE OR REPLACE PROCEDURE bsd_sendemail(
  p_receiver VARCHAR2, p_sub VARCHAR2, p_txt VARCHAR2
) IS
  -- 郵件服務器配置
  p_user       VARCHAR2(30) := 'smtp_user';
  p_pass       VARCHAR2(30) := 'smtp_pwd';
  p_sendor     VARCHAR2(20) := 'SenderName';
  p_server     VARCHAR2(20) := 'mail.server.ip';
  p_port       NUMBER       := 25;
  p_need_smtp  NUMBER       := 1;  -- 1=需認證
  -- 內部變量、輔助過程...
BEGIN
  -- 1. 分割收件人地址 → my_address_list 集合
  -- 2. 循環調用 p_email 發送單封郵件
  --    - UTL_SMTP.OPEN_CONNECTION
  --    - HELO, AUTH LOGIN
  --    - MAIL FROM, RCPT TO
  --    - OPEN_DATA 寫 Headers (From, To, Subject, Content-Type)
  --    - 寫 MIME Body (HTML 正文)
  --    - CLOSE_DATA, QUIT
END;
/
-- 測試調用
BEGIN
  bsd_sendemail('a@test.com,b@test.com', '測試主題', '

HTML 正文

中文內容

'); END; / -- 查看 Outlook 收件箱確認送達

該過程已在生產環境驗證,可作為數據庫級告警、報表分發的底層發送組件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved