Bagikan melalui


Mengirim Pesan Surat HTML dengan Tugas Skrip

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Tugas SendMail Integration Services hanya mendukung pesan email dalam format teks biasa. Namun Anda dapat dengan mudah mengirim pesan email HTML dengan menggunakan tugas Skrip dan kemampuan email .NET Framework.

Catatan

Jika Anda ingin membuat tugas yang dapat digunakan kembali dengan lebih mudah di beberapa paket, pertimbangkan untuk menggunakan kode dalam sampel tugas Skrip ini sebagai titik awal untuk tugas kustom. Untuk informasi selengkapnya, lihat Mengembangkan Tugas Kustom.

Deskripsi

Contoh berikut menggunakan namespace Layanan System.Net.Mail untuk mengonfigurasi dan mengirim pesan surat HTML. Skrip mendapatkanKe, Dari, Subjek, dan isi email dari variabel paket, menggunakannya untuk membuatMailMessage baru , dan mengatur properti IsBodyHtml ke True. Kemudian mendapatkan nama server SMTP dari variabel paket lain, menginisialisasi instans System.Net.Mail.SmtpClient, dan memanggil metode Kirim untuk mengirim pesan HTML. Sampel merangkum fungsionalitas pengiriman pesan dalam subroutine yang dapat digunakan kembali dalam skrip lain.

Untuk mengonfigurasi contoh Tugas Skrip ini tanpa Pengelola Sambungan SMTP

  1. Buat variabel string bernama HtmlEmailTo, HtmlEmailFrom, dan HtmlEmailSubject tetapkan nilai yang sesuai untuk pesan pengujian yang valid.

  2. Buat variabel string bernama HtmlEmailBody dan tetapkan string markup HTML ke dalamnya. Contohnya:

    <html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>  
    
  3. Buat variabel string bernama HtmlEmailServer dan tetapkan nama server SMTP yang tersedia yang menerima pesan keluar anonim.

  4. Tetapkan kelima variabel ini ke properti ReadOnlyVariables dari tugas Skrip baru.

  5. Impor namespace System.Net dan System.Net.Mail ke dalam kode Anda.

Kode sampel dalam topik ini mendapatkan nama server SMTP dari variabel paket. Namun, Anda juga dapat memanfaatkan manajer koneksi SMTP untuk merangkum informasi koneksi, dan mengekstrak nama server dari manajer koneksi dalam kode Anda. Metode AcquireConnection pengelola koneksi SMTP mengembalikan string dalam format berikut:

SmtpServer=smtphost;UseWindowsAuthentication=False;EnableSsl=False;

Anda dapat menggunakan metode String.Split untuk memisahkan daftar argumen ini ke dalam array string individual di setiap titik koma (;) atau tanda sama dengan (=), lalu mengekstrak argumen kedua (subskrip 1) dari array sebagai nama server.

Untuk mengonfigurasi contoh Tugas Skrip ini dengan Pengelola Sambungan SMTP

  1. Ubah tugas Skrip yang dikonfigurasi sebelumnya dengan menghapus HtmlEmailServer variabel dari daftar ReadOnlyVariables.

  2. Ganti baris kode yang mendapatkan nama server:

    Dim smtpServer As String = _  
      Dts.Variables("HtmlEmailServer").Value.ToString  
    

    dengan baris berikut:

    Dim smtpConnectionString As String = _  
      DirectCast(Dts.Connections("SMTP Connection Manager").AcquireConnection(Dts.Transaction), String)  
    Dim smtpServer As String = _  
      smtpConnectionString.Split(New Char() {"="c, ";"c})(1)  
    

Kode

Public Sub Main()  
  
  Dim htmlMessageFrom As String = _  
    Dts.Variables("HtmlEmailFrom").Value.ToString  
  Dim htmlMessageTo As String = _  
    Dts.Variables("HtmlEmailTo").Value.ToString  
  Dim htmlMessageSubject As String = _  
    Dts.Variables("HtmlEmailSubject").Value.ToString  
  Dim htmlMessageBody As String = _  
    Dts.Variables("HtmlEmailBody").Value.ToString  
  Dim smtpServer As String = _  
    Dts.Variables("HtmlEmailServer").Value.ToString  
  
  SendMailMessage( _  
      htmlMessageFrom, htmlMessageTo, _  
      htmlMessageSubject, htmlMessageBody, _  
      True, smtpServer)  
  
  Dts.TaskResult = ScriptResults.Success  
  
End Sub  
  
Private Sub SendMailMessage( _  
    ByVal From As String, ByVal SendTo As String,  _  
    ByVal Subject As String, ByVal Body As String, _  
    ByVal IsBodyHtml As Boolean, ByVal Server As String)  
  
  Dim htmlMessage As MailMessage  
  Dim mySmtpClient As SmtpClient  
  
  htmlMessage = New MailMessage( _  
    From, SendTo, Subject, Body)  
  htmlMessage.IsBodyHtml = IsBodyHtml  
  
  mySmtpClient = New SmtpClient(Server)  
  mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials  
  mySmtpClient.Send(htmlMessage)  
  
End Sub  
public void Main()  
        {  
  
            string htmlMessageFrom = Dts.Variables["HtmlEmailFrom"].Value.ToString();  
            string htmlMessageTo = Dts.Variables["HtmlEmailTo"].Value.ToString();  
            string htmlMessageSubject = Dts.Variables["HtmlEmailSubject"].Value.ToString();  
            string htmlMessageBody = Dts.Variables["HtmlEmailBody"].Value.ToString();  
            string smtpServer = Dts.Variables["HtmlEmailServer"].Value.ToString();  
  
            SendMailMessage(htmlMessageFrom, htmlMessageTo, htmlMessageSubject, htmlMessageBody, true, smtpServer);  
  
            Dts.TaskResult = (int)ScriptResults.Success;  
  
        }  
  
        private void SendMailMessage(string From, string SendTo, string Subject, string Body, bool IsBodyHtml, string Server)  
        {  
  
            MailMessage htmlMessage;  
            SmtpClient mySmtpClient;  
  
            htmlMessage = new MailMessage(From, SendTo, Subject, Body);  
            htmlMessage.IsBodyHtml = IsBodyHtml;  
  
            mySmtpClient = new SmtpClient(Server);  
            mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;  
            mySmtpClient.Send(htmlMessage);  
  
        }  

Lihat Juga

Tugas Kirim Email