sql server 發送html格式的郵件,參考代碼如下:
DECLARE @tableHTML NVARCHAR(MAX) ; -- 獲取當前系統時間,和數據統計的時間 set @d_nowdate = convert(datetime,convert(varchar(10),dateadd(day,-1,getdate()),120),120); -- 如果有數據則發送 if exists (select top 1 * from t_table1(nolock) where d_rq=@d_nowdate) begin set @str_subject='某某'+convert(varchar(10),@d_nowdate,120)+'淨值.'; SET @tableHTML = N'<H1>某某</H1><br>目前測試中<br><table border="1">' + N'<tr><th>日期</th><th>基金代碼</th><th>基金名稱</th><th>淨值</th><th>累計淨值</th></tr>' + CAST ( (select convert(varchar(10),@d_nowdate,120) as 'td','',VC_JJDM as 'td','',Vc_jjmc as 'td','',EN_JJDWJZ as 'td','',EN_LJJZ as 'td' from t_table1 t left join t_table2 tt on t.VC_JJDM = tt.C_FUNDCODE where d_rq=@d_nowdate order by Vc_jjmc,VC_JJDM FOR XML PATH('tr'), ELEMENTS-- TYPE ) AS NVARCHAR(MAX) ) + N'</table>'; -- 發送郵件 exec @i_result = msdb.dbo.sp_send_dbmail @profile_name = 'Profile-Mail', @recipients = '郵箱地址1;郵箱2;郵箱3', @subject = @str_subject, @body = @tableHTML, @body_format = 'HTML'; end
郵件效果如下:
某某淨值
目前測試中
日期
基金代碼
基金名稱
淨值
累計淨值
2013-12-20
111111
AAAAA
0.98300000
0.98300000
2013-12-20
222222
BBBBB
1.04900000
1.04900000
2013-12-20
333333
CCCCC
0.64000000
0.64000000
2013-12-20
444444
DDDDD
0.99400000
0.99400000
2013-12-20
555555
EEEEE
1.05700000
1.05700000
2013-12-20
666666
FFFFF
0.73400000
0.73400000
Database Mail代替了SQL Mail,它使用一個簡單郵件傳輸協議(SMTP)服務器,而不是SQL Mail所要求的MAPI賬號來發送電子郵件。 這允許你的組織發送帶附件和查詢結果的電子郵件,附加查詢結果,以及格式化HTML電子郵件。你還可以用它設定許多其它配置,而不需要你擁有一台Exchange服務器或配置任何類型的MAPI工作區。 使用Database Mail的好處除完全以SMTP為基礎外,Database Mail還具有許多其它優點:
它在數據庫引擎以外運行,因此對數據庫引擎的壓力最小。
它支持群集,完全支持群集環境。
它的用戶資料(Profile)允許使用冗余SMTP服務器。(我將在本文後部分詳細討論這一點。)
它允許你以參數的形式向存儲過程發送查詢文本,存儲過程將執行查詢並在電子郵件中發送結果。
消息通過一個Service Broker隊列異步傳送,因此你在發送電子郵件時不必等待回應。 它為電子郵件發送提供多重安全保護,如一個控制附件擴展名的過濾器和一個附件大小管理器。 建立和使用Database Mail在建立一個Database Mail解決方案前,你需要進行一些規劃工作。首先,你必須具有一台有效的SMTP服務器來傳送電子郵件。如果你沒有SMTP服務器,請參閱微軟知識庫文章308161了解建立SMTP服務器的相關信息。如果你無法確定組織是否擁有SMTP服務器,詢問你的網絡管理員獲得機器名稱或服務器的IP地址。你的網絡管理員可能需要對服務器進行配置,以便SQL Server能夠發送電子郵件。 在Database Mail中,賬戶(Account)保存數據庫引擎用來發送電子郵件消息的信息。一個賬戶只為一台電子郵件服務器保存信息,如賬戶名、電子郵件地址、回復電子郵件地址、服務器名稱或IP地址,以及一些可選的安全設置。 要發送一封Database Mail電子郵件,必須使用一個用戶資料(Profile)。用戶資料為一個或幾個賬戶設立。這種用戶資料-賬戶設置非常有用。它允許你將幾個賬戶和一個用戶資料聯系起來,這意味著你可以將幾台電子郵件服務器和一個用戶資料聯系起來。 因此,當你試圖發送一封電子郵件時,系統會嘗試用戶資料中的每個賬戶,直到消息被成功發送出去。如果一台或幾台SMTP服務器出現故障,這種設置就十分有用。它還允許你開發發送電子郵件的應用程序代碼,而不必擔心針對不同的環境修改Profile名稱。你可以在開發和生產環境中使用相同的Profile名稱,唯一的差別在於用戶資料中包含的賬戶有所不同。 該是時候了解如何建立一個Database Mail賬戶了。在我們的例子中,我假設你正坐在一台你具有系統管理員訪問權限的開發機器前。如果你沒有系統管理員權限,你需要成為msdb數據庫DatabaseMailUserRole的一員。 下面的腳本建立一些我在整個實例中都要用到的變量。
你可以建立一個trigger,再建立一個一模一樣的臨時table,並增加2個欄位,一個是保存trigger的觸發時間,一個保存操作的動作。如insert,update。
在每次修改數據的時候,觸發這個trigger,然後往臨時table insert更新後的數據。
以後查詢臨時table時,通過對比就知道,什麼時候哪個欄位變化了。