需求: 由於SSIS中的Send Mail Task不能很好自定義郵件的內容,通常都是以文本的方式表現. 現在有一個需求, 希望通過SSIS在處理過程中根據不同的執行結果.發送HTML格式的郵件. 很明顯通過Send Mail Task不能達成要求. 那麼我們通過Script Task自定義編程可實現. 實現過程: 在Script Task中的Script選項中點擊Design Script進入VS編程環境中(VB.NET), Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Imports System.Net.Mail Imports System.Data.OleDb Public Class ScriptMain Public Sub Main() BodyDetail() Dts.TaskResult = Dts.Results.Success End Sub ''' <summary> ''' 發送郵件訊息 ''' </summary> '' ' <param name="from">寄件人地址</param> '' ' <param name="recepient">收件人地址</param> '' ' <param name="bcc">密件收件人</param> '' ' <param name="cc">CC接受</param> '' ' <param name="subject">主題訊息</param> '' ' <param name="body">郵件訊息</param> Public Shared Sub SendMailMessage(ByVal from As String, ByVal recepient As String, ByVal bcc As String, ByVal cc As String, ByVal subject As String, ByVal body As String) ' 初始化一個新的實例 MailMessage Dim mMailMessage As New MailMessage() mMailMessage.From = New MailAddress(from) mMailMessage.To.Add(New MailAddress(recepient)) If Not bcc Is Nothing And bcc <> String.Empty Then mMailMessage.Bcc.Add(New MailAddress(bcc)) End If If Not cc Is Nothing And cc <> String.Empty Then mMailMessage.CC.Add(New MailAddress(cc)) End If mMailMessage.Subject = subject mMailMessage.Body = body mMailMessage.IsBodyHtml = True mMailMessage.BodyEncoding = System.Text.Encoding.UTF8 mMailMessage.Priority = MailPriority.Normal Dim mSmtpClient As New SmtpClient() mSmtpClient.Host = "sjexchange" mSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network mSmtpClient.Send(mMailMessage) End Sub Public Shared Sub BodyDetail() Dim objcon As New OleDbConnection("provider=sqloledb.1;initial catalog=database;data source=172.0.0.0;user id=sa;pwd=") Dim dataview As New DataView Dim ds As New DataSet Dim ncopper As String Dim sqlstr, body As String '想出什麼資料都行. sqlstr = "select * from tempquote" Dim objcmd As New OleDbDataAdapter(sqlstr, objcon) objcmd.Fill(ds, "tab") dataview = New DataView(ds.Tables("tab")) If ds.Tables(0).Rows.Count <= 0 Then Exit Sub Else '由於我只有一筆資料,故沒有使用For 語句. ncopper = Trim(CStr(dataview.Item(0).Item("ncopper"))) '只要把HTML包進來就行(你想要多複雜都可以) body = " <body>" body = body + "<table border='1' cellspacing='0' cellpadding='0' width='70%' style='border:none;' align='left'>" body = body + " <tr>" body = body + " <td> </td>" body = body + " <td><label for='ncopper'> copper</label></td>" body = body + " </tr>" body = body + " <tr>" body = body + " <td> new:</td>" body = body + " <td><label for='ncopper'> " + ncopper + "</label></td>" body = body + " </tr>" body = body + "</table>" body = body + "</body>" End If '郵件地址可以通過SSIS變量傳遞 SendMailMessage("[email protected]", "[email protected]", "[email protected]", "[email protected]", "CCL The 4-Raw-Materials Update", body) End Sub End Class |
SSIS中通過Script Task發送郵件 Sql2005
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.