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

SQL Server Database Mail 設定完整圖文教學:從建立設定檔到發送測試郵件

     編輯:關於SqlServer

啟用 Database Mail 功能

  1. SSMS 連線執行個體 → 展開「管理」節點。
  2. 右鍵「Database Mail」→ 選擇「設定 Database Mail」。
  3. 嚮導選「啟用 Database Mail 執行下列工作」→ 下一步 → 系統提示啟用 Service Broker,選「是」。

建立設定檔與帳號

步驟 1:新增設定檔

  • 設定檔名稱:DB_Mail_Profile (後續 sp_send_dbmail 的 @profile_name 參數)。
  • 描述:生產環境郵件發送設定檔。

步驟 2:新增 SMTP 帳號

可新增多個帳號至同一設定檔,Database Mail 會依序嘗試,自動容錯切換。

啟用進階選項與 Database Mail XPs

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1; RECONFIGURE;

或在嚮導最後一步勾選「啟用 Database Mail」。

發送測試郵件 (T-SQL 驗證)

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB_Mail_Profile',
    @recipients = 'test@example.com',
    @subject = 'Database Mail 測試',
    @body = '若收到此郵件,表示 Database Mail 設定成功!',
    @body_format = 'TEXT';  -- 或 HTML

查詢發送狀態與日誌

-- 所有郵件項目
SELECT * FROM msdb.dbo.sysmail_allitems ORDER BY send_request_date DESC;

-- 僅失敗項目
SELECT * FROM msdb.dbo.sysmail_faileditems;

-- 詳細錯誤日誌
SELECT * FROM msdb.dbo.sysmail_log ORDER BY log_date DESC;

sysmail_mailitems.sent_status:1=已發送、2=失敗、3=未發送/重試中。

安全性最佳實踐

  • 建立專用 DatabaseMailUserRole 角色,僅授予必要帳號 EXECUTE 權限於 sp_send_dbmail。
  • SMTP 帳號密碼勿寫死於程式碼,利用 SQL Server 認證儲存或 Azure Key Vault 整合。
  • 定期清理 msdb 郵件歷史:EXEC msdb.dbo.sysmail_delete_mailitems_sp @sent_before = '2023-01-01';。

結語

Database Mail 是 SQL Server 內建、免費且功能完整的郵件發送機制。透過圖形化嚮導完成設定檔與 SMTP 帳號建立,再以 T-SQL 或 Agent 作業驅動,即可滿足監控告警、報表訂閱、流程通知等多樣化場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
欄位範例值 (以 QQ 企業郵箱為例)說明
帳號名稱QQ_Enterprise_Mail識別用
電子郵件地址alert@company.com寄件人顯示地址
顯示名稱系統監控中心寄件人顯示名稱
回覆電子郵件alert@company.com收件者回覆時的地址
伺服器名稱smtp.exmail.qq.comSMTP 伺服器 FQDN
連接埠號465 (SSL) / 587 (TLS)依郵件商要求
驗證方式基本驗證輸入完整信箱帳號與密碼
啟用 SSL勾選保障傳輸加密