資料庫郵件

適用於:SQL ServerAzure SQL 受控執行個體

Database Mail 是從 SQL Server 資料庫引擎或 Azure SQL 受控執行個體,傳送電子郵件訊息的企業解決方案。 您的應用程式可以透過外部 SMTP 伺服器,使用 Database Mail 傳送電子郵件給使用者。 這類訊息能包含查詢結果,也可以包含來自網路上任何資源的檔案。

注意

Database Mail 可在 SQL Server Database Engine 和 Azure SQL 受控實例中使用,但不適用於 Azure SQL Database 和彈性集區。 如需在 Azure SQL 受控執行個體中使用 Database Mail 的詳細資訊,請參閱在 Azure SQL 受控執行個體中,使用 SQL Agent 作業自動化管理工作

使用 Database Mail 的優點

Database Mail 具有可靠性、延展性、安全性及可支援性。

可靠性

  • Database Mail 會使用標準的 Simple Mail Transfer Protocol (SMTP) 來傳送郵件。 您不必在執行 SQL Server 的電腦上安裝擴充 MAPI 用戶端,即可使用 Database Mail。

  • 處理序隔離。 若要將 SQL Server 的影響降到最低,傳遞電子郵件的元件必須個別在 SQL Server 外部執行。 即使外部流程停止或失敗,SQL Server 會繼續將電子郵件訊息排入佇列。 佇列的訊息會在外部處理序或 SMTP 伺服器上線後傳送。

  • 故障切換帳戶。 您可以使用 Database Mail 設定檔,指定多個 SMTP 伺服器。 萬一 SMTP 伺服器無法使用時,還是可以將郵件傳遞到另一個 SMTP 伺服器。

  • 叢集支援。 Database Mail 可感知叢集,而且在叢集上完全受到支援。

延展性

  • 背景傳遞:Database Mail 提供背景或非同步傳遞功能。 呼叫 sp_send_dbmail 傳送訊息時,Database Mail 會新增要求至 Service Broker 佇列。 儲存程序會立即傳回。 外部電子郵件元件就會收到該要求,並傳遞電子郵件。

  • 多個設定檔:Database Mail 讓您在 SQL Server 執行個體中建立多個設定檔。 選擇性地傳送訊息時,您可以選擇 Database Mail 使用的設定檔。

  • 多個帳戶:每個設定檔都可以包含多個備援帳戶。 您可以設定不同的設定檔使用不同的帳戶,在多個電子郵件伺服器散發電子郵件。

  • 64 位元相容性: 64 位元安裝的 SQL Server 完全支援 Database Mail。

安全性

  • 預設關閉:為縮小 SQL Server 的介面區,Database Mail 預存程序預設為停用。

    • 若要設定 Database Mail,您必須是系統管理員固定伺服器角色的成員。
  • 郵件安全:要發送資料庫郵件,您必須是資料庫中 msdb 資料庫角色的成員。

  • 設定檔安全性:Database Mail 會強制執行郵件設定檔的安全性。 您選擇那些可以存取 Database Mail 設定檔的 msdb 資料庫使用者或群組。 您可以將存取權授與給 msdb中的特定使用者或所有使用者。 私人設定檔將存取權限限制於特定的使用者名單。 公開設定檔可供所有資料庫使用者使用。

  • 附件大小管理員:Database Mail 會強制執行附加檔案大小的可設定限制。 您可以使用 sysmail_configure_sp 預存程序來變更這項限制。

  • 禁止的副檔名:Database Mail 維護一個禁止的副檔名清單。 使用者無法附加具有在清單中出現的副檔名的文件檔案。 您可以使用 sysmail_configure_sp 來變更此清單。

  • Database Mail 在 SQL Server 引擎服務帳戶下執行。 若要從資料夾附加檔案至電子郵件,SQL Server 引擎帳戶要有權限可以存取該檔案的資料夾。

支援能力

  • 整合設定:Database Mail 會維護 SQL Server 資料庫引擎中的電子郵件帳戶資訊。 外部客戶端應用程式不需要管理郵件設定檔。 「Database Mail 組態精靈」提供方便的介面,供設定 Database Mail 使用。 您也可以使用 Transact-SQL 建立並維護 Database Mail 設定。

  • 日誌記錄。 Database Mail 會將電子郵件活動記錄到 SQL Server、Microsoft Windows 應用程式事件記錄檔,以及記錄到資料庫中的 msdb 數據表。

  • 稽核:Database Mail 會在 msdb 資料庫中保留所傳送的郵件與附件的複本。 您可以輕鬆稽核 Database Mail 的使用狀況,並檢閱所保留的郵件。

  • 支援 HTML:您可以使用 Database Mail 傳送 HTML 格式的電子郵件。

資料庫郵件架構

Database Mail 是根據使用 Service Broker 技術的佇列架構而設計。 當使用者執行 sp_send_dbmail時,預存程序會在郵件佇列中插入項目,並建立包含該電子郵件訊息的記錄。 在郵件佇列中插入新項目會啟動外部 Database Mail 處理序 (DatabaseMail.exe)。 外部處理序會讀取電子郵件資訊,並傳送電子郵件訊息到適當的電子郵件伺服器。 外部處理程序會將項目插入「狀態」佇列中,以反映傳送作業的結果。 在狀態佇列中插入新記錄會啟動內部預存程序,此預存程序會更新電子郵件訊息的狀態。 除了儲存已傳送 (或未傳送) 的電子郵件訊息之外,Database Mail 也會在系統資料表中記錄任何電子郵件附加檔案。 Database Mail 檢視提供可用於進行疑難排解的訊息狀態,並提供可用來管理 Database Mail 佇列的預存程序。

msdb 系統資料庫如何將訊息傳送至 SMTP 郵件伺服器的圖表。

Database Mail 元件簡介

Database Mail 是由下列主要元件所組成:

  • 組態與安全性元件

    Database Mail 會將組態與安全性資訊儲存在 msdb 資料庫中。 組態與安全性物件會建立用於 Database Mail 的設定檔與帳戶。

  • 訊息元件

    msdb 資料庫會充當郵件主機資料庫,其中會保存 Database Mail 用來傳送電子郵件的訊息物件。 這些物件包括 sp_send_dbmail 預存程序,以及保存訊息相關資訊的資料結構。

  • Database Mail 可執行檔

    Database Mail 可執行檔是一個外部程式,它會從 msdb 資料庫中的佇列讀取,並傳送訊息到電子郵件伺服器。

  • 記錄與稽核元件

    Database Mail 會記錄資料庫中的記錄資訊 msdb ,以及Microsoft Windows 應用程式事件記錄檔。

設定 SQL Agent 以使用資料庫郵件

SQL Server Agent 可以設定成使用 Database Mail。 這個功能是為了在警示通知和工作完成時進行自動通知所需的功能。

警告

作業中個別的作業步驟也不必設定 SQL Server Agent 設定使用 Database Mail,即可傳送電子郵件。 例如,Transact-SQL 作業步驟可以使用 Database Mail 傳送查詢結果至收件者清單。

您可以設定 SQL Server Agent 在下列情況傳送電子郵件訊息至預先定義的運算子:

  • 觸發警示。 經過設定後,警示可以為發生的特定事件傳送電子郵件通知。 例如,警示可以設定為通知操作員某個特定的資料庫事件或作業系統狀況,可能需要立即採取行動。 如需設定警示的詳細資訊,請參閱 警示

  • 排程工作 (如資料庫備份或複寫事件) 成功或失敗。 例如,月底處理發生錯誤時,您可以使用 SQL Server Agent Mail 通知運算子。

要開始設定 SQL Agent 以使用資料庫郵件,請參閱 「配置 SQL Server Agent 郵件以使用資料庫郵件」。

包含可用性群組的資料庫郵件

若要使用包含可用群組的資料庫郵件,您必須連接實例並使用系統儲存程序啟用sp_configure)。 此步驟必須在所有被包含於可用性群組內的副本上完成。

  • 如果您嘗試在連接包含可用性群組監聽器時啟用 sp_configure 資料庫郵件選項,您將收到預期的錯誤: Changes to server configuration options are not permitted in the connection to Contained Availability Group. Change connection to SQL Server instance level and retry the operation. (Microsoft SQL Server, Error: 5874)

在所有副本啟用此 Database Mail XPs 選項後,連接到包含的可用性群組監聽器,繼續執行資料庫郵件設定,如 選擇設定任務所述。 這樣可以確保資料庫郵件物件存在於包含的可用性群組內,並且保持同步。

TDS 8.0 支援

SQL Server 2025(17.x)引入了 TDS 8.0 對資料庫郵件的支援。 TDS 8.0 協定為 SQL Server 與用戶端應用程式間的資料傳輸提供更強的安全性與加密功能。 這使得資料庫郵件能在強制執行 TLS 1.3 加密與 TDS 8.0 的環境中運作。

Troubleshoot

如需針對 Database Mail 進行疑難排解,請瀏覽:

後續步驟