數據庫郵件(Database Mail)是SQL Server 2005數據庫引擎中新增的一項簡單實用的功能。Database Mail代替了SQL Mail,它使用一個簡單郵件傳輸協議(SMTP)服務器,而不是SQL Mail所要求的MAPI賬號來發送電子郵件。
這允許你的組織發送帶附件和查詢結果的電子郵件,附加查詢結果,以及格式化HTML電子郵件。你還可以用它設定許多其它配置,而不需要你擁有一台Exchange服務器或配置任何類型的MAPI工作區。
使用Database Mail的好處
除完全以SMTP為基礎外,Database Mail還具有許多其它優點:
建立和使用Database Mail
在建立一個Database Mail解決方案前,你需要進行一些規劃工作。首先,你必須具有一台有效的SMTP服務器來傳送電子郵件。如果你沒有SMTP服務器,請參閱了解建立SMTP服務器的相關信息。如果你無法確定組織是否擁有SMTP服務器,詢問你的網絡管理員獲得機器名稱或服務器的IP地址。你的網絡管理員可能需要對服務器進行配置,以便SQL Server能夠發送電子郵件。
在Database Mail中,賬戶(Account)保存數據庫引擎用來發送電子郵件消息的信息。一個賬戶只為一台電子郵件服務器保存信息,如賬戶名、電子郵件地址、回復電子郵件地址、服務器名稱或IP地址,以及一些可選的安全設置。
要發送一封Database Mail電子郵件,必須使用一個用戶資料(Profile)。用戶資料為一個或幾個賬戶設立。這種用戶資料-賬戶設置非常有用。它允許你將幾個賬戶和一個用戶資料聯系起來,這意味著你可以將幾台電子郵件服務器和一個用戶資料聯系起來。
因此,當你試圖發送一封電子郵件時,系統會嘗試用戶資料中的每個賬戶,直到消息被成功發送出去。如果一台或幾台SMTP服務器出現故障,這種設置就十分有用。它還允許你開發發送電子郵件的應用程序代碼,而不必擔心針對不同的環境修改Profile名稱。你可以在開發和生產環境中使用相同的Profile名稱,唯一的差別在於用戶資料中包含的賬戶有所不同。
該是時候了解如何建立一個Database Mail賬戶了。在我們的例子中,我假設你正坐在一台你具有系統管理員訪問權限的開發機器前。如果你沒有系統管理員權限,你需要成為msdb數據庫DatabaseMailUserRole的一員。
下面的腳本建立一些我在整個實例中都要用到的變量。注意:整個腳本將在msdb數據庫中運行,Database Mail對象就保存在其中。
USE msdb
GO
DECLARE @ProfileName VARCHAR(255)
DECLARE @AccountName VARCHAR(255)
DECLARE @SMTPAddress VARCHAR(255)
DECLARE @EmailAddressVARCHAR(128)
DECLARE @DisplayUser VARCHAR(128)
這裡我建立了ProfileName、AccountName、STMP服務器名稱以及顯示在電子郵件From(郵件來自)框中的地址。
SET @ProfileName = 'DBMailProfile';
SET @AccountName = 'DBMailAccount';
SET @SMTPAddress = 'mail.yoursmtpserver.com';
SET @EmailAddress = '[email protected]';
SET @DisplayUser = 'The Mail Man';