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

SQL Server Database Mail 與舊版 SQL Mail 擴展預存程序完整參考

     編輯:關於SqlServer

SQL Server 郵件功能完整指南:從舊版 SQL Mail 到 Database Mail

重要提示:SQL Mail 已在 SQL Server 2005 起標記棄用,SQL Server 2012 移除。生產環境請遷移至 Database Mail (系統預存程序 msdb.dbo.sp_send_dbmail)。本文僅作為舊系統維護參考。

舊版 SQL Mail 核心擴展預存程序

1. 啟動/停止郵件會話

-- 啟動 (可選參數:帳號/密碼)
xp_startmail @user, @passWord
-- 或企業管理員 → Support Services → SQL Mail → 右鍵 Start

-- 停止
xp_stopmail

2. 發送郵件 xp_sendmail

xp_sendmail
    @recipients = '收件人1;收件人2',      -- 必塊
    @message = '郵件正文',
    @query = 'SELECT * FROM Orders',       -- 查詢結果附件
    @attachments = 'C:\report.pdf',
    @copy_recipients = 'CC1;CC2',
    @blind_copy_recipients = 'BCC1',
    @subject = '主旨',
    @type = 'text/html',                   -- 郵件格式
    @attach_results = 'TRUE',              -- 查詢結果作附件
    @no_output = 'TRUE',                   -- 抑制輸出
    @no_header = 'FALSE',                  -- 包含欄位名
    @width = 80,                           -- 文字寬度
    @separator = ',',                      -- 欄位分隔符
    @echo_error = 'TRUE',                  -- 回傳錯誤
    @set_user = 'dbo',                     -- 查詢執行身分
    @dbuse = 'Northwind'                   -- 查詢資料庫

3. 讀取收件箱 xp_readmail

xp_readmail
    @msg_id = 1,                    -- 郵件編號
    @type = 'text' OUTPUT,
    @peek = 'TRUE',                 -- 僅預覽不標記已讀
    @suppress_attach = 'FALSE',
    @originator = @sender OUTPUT,   -- 寄件人
    @subject = @subject OUTPUT,
    @message = @body OUTPUT,
    @recipients = @to OUTPUT,
    @cc_list = @cc OUTPUT,
    @bcc_list = @bcc OUTPUT,
    @date_received = @dt OUTPUT,
    @unread = @unread OUTPUT,
    @attachments = @attach OUTPUT,
    @skip_bytes = 0,                -- 長信分段讀取
    @msg_length = @len OUTPUT

4. 導航與刪除

-- 取得下一封郵件編號
xp_findnextmsg @msg_id = @next_id OUTPUT, @unread_only = 'TRUE'

-- 刪除指定郵件 (不指定則刪全部)
xp_deletemail '1'

5. 自動處理郵件 sp_processmail

sp_processmail
    @subject = '關鍵字',
    @filetype = '附件類型',
    @separator = ',',
    @set_user = 'dbo',
    @dbuse = '目標資料庫'

遷移至 Database Mail 快速對照

舊版 SQL MailDatabase Mail (SQL 2005+)
xp_startmail無需啟動,Service Broker 驅動
xp_sendmailmsdb.dbo.sp_send_dbmail
xp_readmail / xp_findnextmsg不支援 POP3 讀取,改用應用層處理
xp_deletemail不適用
sp_processmail改用 Service Broker 隊列 + 啟動預存程序

Database Mail 基本設定腳本

-- 1. 啟用 Database Mail (需 sysadmin)
EXEC msdb.dbo.sysmail_add_account_sp
    @account_name = 'SMTP_Account',
    @email_address = 'sqlagent@company.com',
    @mailserver_name = 'smtp.company.com',
    @port = 25;

EXEC msdb.dbo.sysmail_add_profile_sp @profile_name = 'Default_Profile';
EXEC msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'Default_Profile', @account_name = 'SMTP_Account', @sequence_number = 1;

-- 2. 發送測試
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Default_Profile',
    @recipients = 'dba@company.com',
    @subject = 'Database Mail 測試',
    @body = '遷移成功!',
    @body_format = 'HTML';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved