Sdílet prostřednictvím


Odeslání e-mailové zprávy HTML pomocí úlohy skriptu

platí pro:SQL Server SSIS Integration Runtime ve službě Azure Data Factory

Úloha SendMail integračních služeb podporuje pouze e-mailové zprávy ve formátu prostého textu. E-mailové zprávy HTML ale můžete snadno odesílat pomocí úlohy Skript a poštovních funkcí rozhraní .NET Framework.

Poznámka

Pokud chcete vytvořit úlohu, kterou můžete snadněji použít ve více balíčcích, zvažte použití kódu v této ukázce úlohy Skript jako výchozí bod pro vlastní úlohu. Další informace naleznete v tématu Vývoj vlastníhoúloh .

Popis

Následující příklad používá obor názvů System.Net.Mail ke konfiguraci a odeslání e-mailové zprávy HTML. Skript získá To, From, Subject a tělo e-mailu z proměnných balíčku, používá je k vytvoření nové MailMessagea nastaví jeho IsBodyHtml vlastnost True. Potom získá název serveru SMTP z jiné proměnné balíčku, inicializuje instanci System.Net.Mail.SmtpClienta zavolá její Send metodu pro odeslání zprávy HTML. Ukázka zapouzdřuje funkci odesílání zpráv v podprogramu, který lze znovu použít v jiných skriptech.

Konfigurace tohoto příkladu úlohy skriptu bez správce připojení SMTP

  1. Vytvořte řetězcové proměnné s názvem HtmlEmailTo, HtmlEmailFroma HtmlEmailSubject a přiřaďte jim odpovídající hodnoty pro platnou testovací zprávu.

  2. Vytvořte řetězcovou proměnnou s názvem HtmlEmailBody a přiřaďte jí řetězec kódu HTML. Například:

    <html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>  
    
  3. Vytvořte řetězcovou proměnnou s názvem HtmlEmailServer a přiřaďte název dostupného serveru SMTP, který přijímá anonymní odchozí zprávy.

  4. Přiřaďte všech pět těchto proměnných ReadOnlyVariables vlastnost nové úlohy Script.

  5. Importujte obory názvů System.Net a System.Net.Mail do kódu.

Vzorový kód v tomto tématu získá název serveru SMTP z proměnné balíčku. Můžete ale také využít správce připojení SMTP k zapouzdření informací o připojení a extrahovat název serveru ze správce připojení v kódu. Metoda AcquireConnection správce připojení SMTP vrátí řetězec v následujícím formátu:

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

Metodu String.Split můžete použít k oddělení tohoto seznamu argumentů do pole jednotlivých řetězců na každém středníku (;) nebo rovnítko (=) a potom extrahovat druhý argument (dolní index 1) z pole jako název serveru.

Konfigurace tohoto příkladu úlohy skriptu pomocí Správce připojení SMTP

  1. Upravte úlohu skriptu nakonfigurovanou dříve odebráním proměnné HtmlEmailServer ze seznamu ReadOnlyVariables.

  2. Nahraďte řádek kódu, který získá název serveru:

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

    s následujícími řádky:

    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)  
    

Kód

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);  
  
        }  

Viz také

odeslat úkolu pošty