Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
SSIS Integration Runtime w usłudze Azure Data Factory
Zadanie SendMail usług Integration Services obsługuje tylko wiadomości e-mail w formacie zwykłego tekstu. Można jednak łatwo wysyłać wiadomości e-mail HTML przy użyciu zadania Skrypt i możliwości poczty programu .NET Framework.
Nuta
Jeśli chcesz utworzyć zadanie, które można łatwiej użyć w wielu pakietach, rozważ użycie kodu w tym przykładzie zadania skryptu jako punktu początkowego zadania niestandardowego. Aby uzyskać więcej informacji, zobacz Tworzenie niestandardowego zadania.
Opis
W poniższym przykładzie użyto przestrzeni nazw System.Net.Mail do skonfigurowania i wysłania wiadomości e-mail w formacie HTML. Skrypt uzyskuje właściwość Do, From, Subject i treść wiadomości e-mail ze zmiennych pakietu, używa ich do utworzenia nowej MailMessagei ustawia jej właściwość IsBodyHtml na wartość True. Następnie uzyskuje nazwę serwera SMTP z innej zmiennej pakietu, inicjuje wystąpienie System.Net.Mail.SmtpClienti wywołuje jego Send metodę wysyłania komunikatu HTML. Przykład hermetyzuje funkcję wysyłania komunikatów w podroutynie, która może być ponownie użyta w innych skryptach.
Aby skonfigurować ten przykład zadania skryptu bez Menedżera połączeń SMTP
Utwórz zmienne ciągu o nazwie
HtmlEmailTo,HtmlEmailFromiHtmlEmailSubjecti przypisz do nich odpowiednie wartości w celu uzyskania prawidłowego komunikatu testowego.Utwórz zmienną ciągu o nazwie
HtmlEmailBodyi przypisz do niej ciąg znaczników HTML. Na przykład:<html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>Utwórz zmienną ciągu o nazwie
HtmlEmailServeri przypisz nazwę dostępnego serwera SMTP, który akceptuje anonimowe komunikaty wychodzące.Przypisz wszystkie pięć tych zmiennych do właściwości ReadOnlyVariables nowego zadania skryptu.
Zaimportuj przestrzenie nazw System.Net i System.Net.Mail do kodu.
Przykładowy kod w tym temacie uzyskuje nazwę serwera SMTP ze zmiennej pakietu. Można jednak również skorzystać z menedżera połączeń SMTP, aby hermetyzować informacje o połączeniu i wyodrębnić nazwę serwera z menedżera połączeń w kodzie. Metoda AcquireConnection menedżera połączeń SMTP zwraca parametry w następującym formacie:
SmtpServer=smtphost;UseWindowsAuthentication=False;EnableSsl=False;
Możesz użyć metody String.Split, aby oddzielić tę listę argumentów do tablicy pojedynczych ciągów w każdym średniku (;) lub znaku równości (=), a następnie wyodrębnić drugi argument (indeks dolny 1) z tablicy jako nazwę serwera.
Aby skonfigurować ten przykład zadania skryptu za pomocą Menedżera połączeń SMTP
Zmodyfikuj zadanie Skrypt skonfigurowane wcześniej, usuwając zmienną
HtmlEmailServerz listy ReadOnlyVariables.Zastąp wiersz kodu, który uzyskuje nazwę serwera:
Dim smtpServer As String = _ Dts.Variables("HtmlEmailServer").Value.ToStringz następującymi wierszami:
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)
Kod
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);
}