使用DBMail發送html格式的查詢內容

  • 11570
  • 0
  • SSMS
  • 2011-03-26

一般我們寫程式若要發送mail給客戶時,若是.net就直接拉畫面,到資料庫查詢要的欄位
一個一個放上去樣板畫面對應。

一般我們寫程式若要發送mail給客戶時,若是.net就直接拉畫面,到資料庫查詢要的欄位

一個一個放上去樣板畫面對應。

今天看了一位前輩前的文章([MSSQL 2008] SQL SERVER AGENT使用DATABASE MAIL發送電子郵件

還有sql server bookonline中介紹關於sp_send_dbmail的部份

雖然自己也曾經寫過關於使用procedure來發dbmail的文章設定部份,但發現其實dbmail可以簡化我們

在寫程式的過程中,發信通知的部份,就可以改由資料庫來運作,不用再透過程式。

 

看完bookonline,自行測試了一下,將結果記錄下來,以後也用到的,或許他人也可以快速的使用這

樣的範例,加速專案的進度。

以下是最簡易型的範例

   1: EXEC msdb.dbo.sp_send_dbmail
   2:     @profile_name = 'gmail', --sql server中的dbmail profile名稱
   3:     @recipients = 'abc@test.com', --收件者
   4:     @body = '這是測試信', --mail內文
   5:     @subject = '測試dbmail-sql內容' ; --主旨

 

以寄出html內文的範例

   1: DECLARE @tableHTML  NVARCHAR(MAX) ;
   2: SET @tableHTML =
   3:     N'<H1>客戶資料表</H1>' +
   4:     N'<table border="1">' +
   5:     N'<tr><th>客戶代號</th>' +
   6:         N'<th>客戶名稱</th>' +    
   7:         N'<th>城市</th></tr>' +
   8:     CAST ( ( SELECT top 10 td =CustomerID  ,   '',    
   9:                     td = CompanyName,  '', 
  10:                     td = City  
  11:                FROM  Northwind.dbo.Customers
  12:                FOR XML PATH('tr'), TYPE 
  13:     ) AS NVARCHAR(MAX) ) +
  14:     N'</table>' ;
  15:  
  16: EXEC msdb.dbo.sp_send_dbmail
  17: @profile_name = 'gmail', --sql server中dbmail的profile名稱
  18: @recipients = 'abc@test.com',  --收件者
  19: @body = @tableHTML,  --內文的來源為變數
  20: @body_format = 'HTML' ,  --設定內文格式為html
  21: @subject = '測試dbmail-sql內容' ;    --主旨

以下為收到mail的樣子

image

 

看起來還頗不錯的..走過必留下痕跡,留個記錄,以後也好查