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

SQL Server 透過 SQL Mail 與 Exchange Server 整合:使用 xp_sendmail 發送郵件、查詢結果附件與抄送密送功能

     編輯:關於SqlServer

SQL Mail 運作模式

SQL Mail 需配置 MAPI 設定檔 (Outlook/Exchange) 並啟用 SQL Server Agent 服務。郵件發送觸發情境:

  1. 警示通知:作業失敗、效能計數器超標等警示觸發,寄送給預定操作員。
  2. 應用程式主動發送:透過擴展預存程序 xp_sendmail。

xp_sendmail 完整語法與參數說明

xp_sendmail
    [@recipients =] 'recipients[;...n]'
    [,[@message =] 'message']
    [,[@query =] 'query']
    [,[@attachments =] 'attachments']
    [,[@copy_recipients =] 'copy_recipients[;...n]']
    [,[@blind_copy_recipients =] 'blind_copy_recipients[;...n]']
    [,[@subject =] 'subject']
    [,[@type =] 'type']
    [,[@attach_results =] 'attach_value']
    [,[@no_output =] 'output_value']
    [,[@no_header =] 'header_value']
    [,[@width =] width]
    [,[@separator =] 'separator']
    [,[@echo_error =] 'echo_value']
    [,[@set_user =] 'user']
    [,[@dbuse =] 'database']

參數詳細

參數說明預設/備註
@recipients收件人郵件地址,多個以分號分隔必填
@message郵件本文內容,最長 7990 位元組選填
@queryT-SQL 查詢語句,結果集將附於郵件,長度 ≤ 8000 位元組選填
@attachments附件檔案完整路徑,多個以分號分隔選填
@copy_recipients副本 (CC) 收件人選填
@blind_copy_recipients密件副本 (BCC) 收件人,郵件中不顯示地址選填
@subject郵件主旨預設 "SQL Server Message"
@typeMAPI 郵件類型預設空值
@attach_results是否將 @query 結果作為附件發送 (TRUE/FALSE)FALSE
@no_output不回傳資訊至 SQL 用戶端 (TRUE/FALSE)FALSE
@no_header不包含查詢結果欄位名稱 (TRUE/FALSE)FALSE
@width查詢結果行寬 (字元數),預設 80,過窄會截斷80
@separator查詢結果欄位分隔字元預設空白
@echo_error錯誤訊息是否回傳至用戶端 (TRUE/FALSE)FALSE
@set_user模擬執行使用者內容選填
@dbuse查詢執行的資料庫內容選填

使用範例

-- 發送查詢結果附件給多位收件人,含 CC/BCC
EXEC master..xp_sendmail
    @recipients = 'user1@domain.com;user2@domain.com',
    @copy_recipients = 'manager@domain.com',
    @blind_copy_recipients = 'audit@domain.com',
    @subject = '每日銷售報表',
    @message = '附件為今日銷售明細,請查收。',
    @query = 'SELECT OrderID, CustomerID, OrderDate, TotalAmount FROM Sales.DailySummary WHERE OrderDate = CONVERT(date, GETDATE())',
    @attach_results = 'TRUE',
    @width = 200,
    @separator = ',',
    @no_header = 'FALSE';

注意事項

  • SQL Mail 為舊技術,SQL Server 2005+ 推薦使用 Database Mail (不依賴 MAPI/Outlook,支援 SMTP、SSL、多設定檔、非同步發送)。
  • xp_sendmail 需啟用 sp_configure 'SQL Mail XPs', 1。
  • 郵件伺服器需允許 SQL Server 服務帳號發送郵件 (匿名中繼或驗證)。
  • 大量郵件發送建議使用 Database Mail 配合 Service Broker 非同步佇列,避免阻塞 SQL Server 工作執行緒。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved