程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL Server中發送HTML格式郵件的方法,sqlserver

SQL Server中發送HTML格式郵件的方法,sqlserver

編輯:更多數據庫知識

SQL Server中發送HTML格式郵件的方法,sqlserver


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


怎建立SQL Server 2005數據庫郵件

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的一員。 下面的腳本建立一些我在整個實例中都要用到的變量。
 

SQL server 2005 怎遍歷發郵件

你可以建立一個trigger,再建立一個一模一樣的臨時table,並增加2個欄位,一個是保存trigger的觸發時間,一個保存操作的動作。如insert,update。

在每次修改數據的時候,觸發這個trigger,然後往臨時table insert更新後的數據。

以後查詢臨時table時,通過對比就知道,什麼時候哪個欄位變化了。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved