Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
SSIS Integration Runtime i Azure Data Factory
Integration Services SendMail-uppgiften stöder endast e-postmeddelanden i oformaterad text. Du kan dock enkelt skicka HTML-e-postmeddelanden med hjälp av skriptaktiviteten och e-postfunktionerna i .NET Framework.
Not
Om du vill skapa en uppgift som du enklare kan återanvända i flera paket kan du överväga att använda koden i det här skriptuppgiftsexemplet som startpunkt för en anpassad uppgift. Mer information finns i Utveckla en anpassad uppgift.
Beskrivning
I följande exempel används namnområdet System.Net.Mail för att konfigurera och skicka ett HTML-e-postmeddelande. Skriptet hämtar till, från, ämne och brödtexten för e-postmeddelandet från paketvariabler, använder dem för att skapa en ny MailMessageoch anger dess IsBodyHtml egenskap till True. Sedan hämtas SMTP-servernamnet från en annan paketvariabel, initierar en instans av System.Net.Mail.SmtpClientoch anropar dess Send-metod för att skicka HTML-meddelandet. Exemplet kapslar in meddelandesändningsfunktionen i en underrutin som kan återanvändas i andra skript.
Så här konfigurerar du skriptuppgiftsexemplet utan en SMTP-anslutningshanterare
Skapa strängvariabler med namnet
HtmlEmailTo
,HtmlEmailFrom
ochHtmlEmailSubject
och tilldela lämpliga värden till dem för ett giltigt testmeddelande.Skapa en strängvariabel med namnet
HtmlEmailBody
och tilldela en sträng med HTML-kod till den. Till exempel:<html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>
Skapa en strängvariabel med namnet
HtmlEmailServer
och tilldela namnet på en tillgänglig SMTP-server som accepterar anonyma utgående meddelanden.Tilldela alla fem variablerna till egenskapen ReadOnlyVariables för en ny skriptaktivitet.
Importera namnrymderna System.Net och System.Net.Mail i koden.
Exempelkoden i det här avsnittet hämtar SMTP-servernamnet från en paketvariabel. Du kan dock också dra nytta av en SMTP-anslutningshanterare för att kapsla in anslutningsinformationen och extrahera servernamnet från anslutningshanteraren i koden. Den AcquireConnection metoden för SMTP-anslutningshanteraren returnerar en sträng i följande format:
SmtpServer=smtphost;UseWindowsAuthentication=False;EnableSsl=False;
Du kan använda metoden String.Split för att separera argumentlistan i en matris med enskilda strängar vid varje semikolon (;) eller likhetstecken (=) och sedan extrahera det andra argumentet (nedsänkt 1) från matrisen som servernamn.
Så här konfigurerar du skriptuppgiftsexemplet med en SMTP-anslutningshanterare
Ändra skriptuppgiften som konfigurerades tidigare genom att ta bort variabeln
HtmlEmailServer
från listan över ReadOnlyVariables.Ersätt den kodrad som hämtar servernamnet:
Dim smtpServer As String = _ Dts.Variables("HtmlEmailServer").Value.ToString
med följande rader:
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);
}