SSIS中通過Script Task發送郵件 Sql2005

需求:
    由於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>&nbsp;&nbsp;</td>"
            body = body + "    <td><label for='ncopper'>&nbsp;copper</label></td>"
            body = body + " </tr>"
            body = body + " <tr>"
            body = body + "    <td>&nbsp;&nbsp;new:</td>"
            body = body + "    <td><label for='ncopper'>&nbsp;" + 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章