Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 membuat
Untuk mengonfigurasi contoh Tugas Skrip ini tanpa Pengelola Sambungan SMTP
Buat variabel string bernama
HtmlEmailTo,HtmlEmailFrom, danHtmlEmailSubjecttetapkan nilai yang sesuai untuk pesan pengujian yang valid.Buat variabel string bernama
HtmlEmailBodydan tetapkan string markup HTML ke dalamnya. Contohnya:<html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>Buat variabel string bernama
HtmlEmailServerdan tetapkan nama server SMTP yang tersedia yang menerima pesan keluar anonim.Tetapkan kelima variabel ini ke properti ReadOnlyVariables dari tugas Skrip baru.
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
Ubah tugas Skrip yang dikonfigurasi sebelumnya dengan menghapus
HtmlEmailServervariabel dari daftar ReadOnlyVariables.Ganti baris kode yang mendapatkan nama server:
Dim smtpServer As String = _ Dts.Variables("HtmlEmailServer").Value.ToStringdengan 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);
}