Udostępnij za pośrednictwem


Wysyłanie wiadomości HTML mail z zadaniem skryptów

The Integration Services SendMail task only supports mail messages in plain text format.Można jednak łatwo wysłać wiadomości e-mail w formacie HTML za pomocą zadań skryptów i możliwości poczty systemu .NET Framework.

Uwaga

Jeśli chcesz utworzyć zadanie, które łatwo można używać w wielu pakietów, należy rozważyć przy użyciu kodu w tym przykładzie skrypt zadanie jako punkt początkowy dla niestandardowego zadania.Aby uzyskać więcej informacji zobaczOpracowywania niestandardowego zadania.

Description

W poniższym przykładzie użyto System.Net.Mail obszar nazw, aby skonfigurować i wysłać wiadomość e-mail w formacie HTML.Skrypt uzyskuje do, od, temat i treść wiadomości e-mail z pakiet zmiennych, służą one do tworzenia nowego MailMessage i ustawia jego IsBodyHtml Właściwość True. Następnie uzyskuje nazwa serwera SMTP z innej zmiennej pakiet, inicjuje wystąpienie System.Net.Mail.SmtpClient, a wywołuje jego Send Metoda wysyłania wiadomości w formacie HTML. Próbka hermetyzuje wiadomości, wysyłanie funkcjonalność w procedura, która może być wielokrotnie używane w innych skryptów.

Aby skonfigurować w tym przykładzie skrypt zadań bez SMTP menedżer połączeń

  1. Tworzenie zmiennych typu ciąg o nazwie HtmlEmailTo, HtmlEmailFrom, a HtmlEmailSubject i przypisz odpowiednie wartości dla nich dla wiadomości testowej prawidłowy.

  2. Tworzenie zmiennej ciągu o nazwie HtmlEmailBody i przypisać jej ciąg znaczniki HTML. Na przykład:

    <html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>
    
  3. Tworzenie zmiennej ciąg o nazwie HtmlEmailServer i przypisać nazwę dostępnego serwera SMTP akceptującym anonimowe wiadomości wychodzących.

  4. Wszystkie pięć tych zmiennych, aby przypisać ReadOnlyVariables właściwość nowe zadanie skryptu.

  5. Importowanie System.Net i System.Net.Mail obszary nazw do kodu.

Przykładowy kod w tym temacie uzyskuje nazwa serwera SMTP ze zmiennej pakiet.Jednak użytkownik może również wykorzystać aby umieszczać informacje o połączeniu Menedżer połączeń SMTP i wyodrębnić nazwa serwera z Menedżera połączeń w kodzie.The AcquireConnection(Object) metoda of the SMTP menedżer połączeń returns a ciąg in the following format:

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

Można użyć String.Split metoda, aby podzielić tej listy argumentów na tablicę ciągów pojedynczy w każdym średnik (;) lub równa się znak (=), a następnie wyodrębnić drugiego argumentu (indeks dolny 1) z tablicy jako nazwa serwera.

Aby skonfigurować w tym przykładzie skrypt zadań z zarządcę połączeń SMTP

  1. Modyfikowanie zadania skryptu, wcześniej skonfigurowane przez usunięcie HtmlEmailServer zmienną z listy ReadOnlyVariables.

  2. Zastąp wiersza kodu, który uzyskuje nazwa serwera:

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

    następujące wiersze:

        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)
    

Code

  Public Sub Main()

    Dim htmlMessageTo As String = _
      Dts.Variables("HtmlEmailTo").Value.ToString
    Dim htmlMessageFrom As String = _
      Dts.Variables("HtmlEmailFrom").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( _
        htmlMessageTo, htmlMessageFrom, _
        htmlMessageSubject, htmlMessageBody, _
        True, smtpServer)

    Dts.TaskResult = ScriptResults.Success

  End Sub

  Private Sub SendMailMessage( _
      ByVal SendTo As String, ByVal From 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( _
      SendTo, From, Subject, Body)
    htmlMessage.IsBodyHtml = IsBodyHtml

    mySmtpClient = New SmtpClient(Server)
    mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials
    mySmtpClient.Send(htmlMessage)

  End Sub
public void Main()
        {

            string htmlMessageTo = Dts.Variables["HtmlEmailTo"].Value.ToString();
            string htmlMessageFrom = Dts.Variables["HtmlEmailFrom"].Value.ToString();
            string htmlMessageSubject = Dts.Variables["HtmlEmailSubject"].Value.ToString();
            string htmlMessageBody = Dts.Variables["HtmlEmailBody"].Value.ToString();
            string smtpServer = Dts.Variables["HtmlEmailServer"].Value.ToString();

            SendMailMessage(htmlMessageTo, htmlMessageFrom, htmlMessageSubject, htmlMessageBody, true, smtpServer);

            Dts.TaskResult = (int)ScriptResults.Success;

        }

        private void SendMailMessage(string SendTo, string From, string Subject, string Body, bool IsBodyHtml, string Server)
        {

            MailMessage htmlMessage;
            SmtpClient mySmtpClient;

            htmlMessage = new MailMessage(SendTo, From, Subject, Body);
            htmlMessage.IsBodyHtml = IsBodyHtml;

            mySmtpClient = new SmtpClient(Server);
            mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
            mySmtpClient.Send(htmlMessage);

        }
Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.

See Also

Other Resources