SQL Mail 是 SQL Server 早期版本內建的郵件發送功能,雖已被 Database Mail 取代,但在舊系統維護中仍常見。本文詳細記錄從 SMTP 服務建立、Outlook 設定檔建立、SQL Server 服務帳號配置,到擴展預存程序 xp_sendmail 實際發送的完整流程,並解決 Web 應用程式呼叫時的權限問題。
SQL Mail 需要本機或遠端 SMTP 伺服器。本例使用 Imail 6.04(穩定性優於 Windows 2000 內建 SMTP)。確認 SMTP 服務已啟動且可正常轉發郵件。
Windows 2000 中文版控制台預設無「郵件」圖示,必須安裝 Outlook 才會出現。
myProfile,設定帳號、SMTP/POP3 伺服器等資訊。myProfile 為預設設定檔,測試收發信正常。myProfile,點擊「測試」,應顯示「成功啟動並結束 MAPI 工作階段」。在查詢分析器測試:
EXEC xp_sendmail
@recipients = 'user@example.com',
@subject = '測試郵件',
@message = '這是由 SQL Mail 發送的測試內容。';
| 參數 | 說明 |
|---|---|
| @recipients | 收件人,多筆以分號分隔(必要) |
| @subject | 郵件主旨 |
| @message | 郵件本文 |
| @query | 附加查詢結果(除觸發器 inserted/deleted 表外,可參考任何物件) |
| @attachments | 附件路徑 |
| @copy_recipients / @blind_copy_recipients | 副本/密件副本 |
| @attach_results | 將查詢結果作為附件 |
| @no_header | 不包含查詢結果欄位名稱 |
| @width / @separator | 查詢結果輸出寬度與分隔字元 |
網站使用 DbGuest 連線資料庫,該帳號預設無權執行 xp_sendmail。
master 資料庫 → 「擴展預存程序」。xp_sendmail,右鍵「屬性」→「權限」。DbGuest 使用者,勾選 EXEC 權限。完成後,網站註冊測試即可收到郵件:謝謝你的註冊,你的使用者名稱是 [心歌], 密碼是 123456789, 建議你首次登入後修改密碼
整個設定過程看似簡單,實際排除帳號權限、MAPI 設定檔載入等問題耗時一週。希望本文能幫助讀者順利完成部署。