Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Integration Services SendMail görevi yalnızca düz metin biçiminde posta iletilerini destekler. Ancak Betik görevini ve .NET Framework'ün posta özelliklerini kullanarak HTML posta iletilerini kolayca gönderebilirsiniz.
Not
Birden çok pakette daha kolay yeniden kullanabileceğiniz bir görev oluşturmak istiyorsanız, özel bir görevin başlangıç noktası olarak bu Betik görev örneğindeki kodu kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Özel Görev geliştirme.
Açıklama
Aşağıdaki örnekte, html posta iletisini yapılandırmak ve göndermek için System.Net.Mail ad alanı gerçekleştirilir. Betik, paket değişkenlerinden e-postanın To, From, Subject ve gövdesini alır, bunları kullanarak yeni bir
Bu Betik Görevi örneğini SMTP Bağlantı Yöneticisi olmadan yapılandırmak için
HtmlEmailTo
,HtmlEmailFrom
veHtmlEmailSubject
adlı dize değişkenleri oluşturun ve geçerli bir test iletisi için bunlara uygun değerleri atayın.HtmlEmailBody
adlı bir dize değişkeni oluşturun ve buna bir HTML işaretleme dizesi atayın. Mesela:<html><body><h1>Testing</h1><p>This is a <b>test</b> message.</p></body></html>
HtmlEmailServer
adlı bir dize değişkeni oluşturun ve anonim giden iletileri kabul eden kullanılabilir bir SMTP sunucusunun adını atayın.Bu değişkenlerin beşini de yeni betik görevinin ReadOnlyVariables özelliğine atayın.
System.Net ve System.Net.Mail ad alanlarını kodunuz içine aktarın.
Bu konudaki örnek kod, SMTP sunucusu adını bir paket değişkeninden alır. Ancak, bağlantı bilgilerini kapsüllemek ve bağlantı yöneticisinden sunucu adını kodunuzda ayıklamak için smtp bağlantı yöneticisinden de yararlanabilirsiniz. SMTP bağlantı yöneticisinin AcquireConnection yöntemi aşağıdaki biçimde bir dize döndürür:
SmtpServer=smtphost;UseWindowsAuthentication=False;EnableSsl=False;
Bu bağımsız değişken listesini her noktalı virgüldeki (;) veya eşittir işareti (=) tek tek dize dizisine ayırmak için String.Split yöntemini kullanabilir ve ardından diziden ikinci bağımsız değişkeni (alt simge 1) sunucu adı olarak ayıklayabilirsiniz.
Bu Betik Görevi örneğini SMTP Bağlantı Yöneticisi ile yapılandırmak için
HtmlEmailServer
değişkenini ReadOnlyVariableslistesinden kaldırarak daha önce yapılandırılan Betik görevini değiştirin.Sunucu adını alan kod satırını değiştirin:
Dim smtpServer As String = _ Dts.Variables("HtmlEmailServer").Value.ToString
aşağıdaki satırlarla:
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);
}
Ayrıca Bkz.
posta görevi