SQL Mail 需配置 MAPI 設定檔 (Outlook/Exchange) 並啟用 SQL Server Agent 服務。郵件發送觸發情境:
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 位元組 | 選填 |
| @query | T-SQL 查詢語句,結果集將附於郵件,長度 ≤ 8000 位元組 | 選填 |
| @attachments | 附件檔案完整路徑,多個以分號分隔 | 選填 |
| @copy_recipients | 副本 (CC) 收件人 | 選填 |
| @blind_copy_recipients | 密件副本 (BCC) 收件人,郵件中不顯示地址 | 選填 |
| @subject | 郵件主旨 | 預設 "SQL Server Message" |
| @type | MAPI 郵件類型 | 預設空值 |
| @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';
xp_sendmail 需啟用 sp_configure 'SQL Mail XPs', 1。