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 應用程式事件記錄檔中。
您不需要完全了解 Database Mail 架構,也可以有效率地使用 Database Mail。不過,了解 Database Mail 的元件以及元件互動的方式,將有助於設計應用程式,並解決任何可能發生的問題。
下圖顯示 Database Mail 架構的概觀。
Database Mail 是根據使用 Service Broker 技術的佇列架構而設計。當使用者執行 sp_send_dbmail時,預存程序會在郵件佇列中插入項目,並建立包含該電子郵件訊息的記錄。在郵件佇列中插入新項目會啟動外部 Database Mail 處理序 (DatabaseMail.exe)。外部處理序會讀取電子郵件資訊,並傳送電子郵件訊息到適當的電子郵件伺服器。外部處理序會在「狀態」佇列中插入項目,表示傳送作業的結果。在狀態佇列中插入新記錄會啟動內部預存程序,此預存程序會更新電子郵件訊息的狀態。除了儲存已傳送 (或未傳送) 的電子郵件訊息之外,Database Mail 也會在系統資料表中記錄任何電子郵件附加檔案。Database Mail 檢視提供可用於進行疑難排解的訊息狀態,並提供可用來管理 Database Mail 佇列的預存程序。
只有 msdb 資料庫中 DatabaseMailUserRole 的成員可以執行 sp_send_dbmail。