VB.NETコードを使用したスクリプトタスクを使用して、SSISパッケージから電子メールを送信することができました。私はスクリプティングが苦手です。基本的に、オンラインでさまざまなスクリプトを調べて、自分のいる場所にたどり着きました。私が抱えている問題は、BIDSのSSISパッケージですべての変数を設定し、パッケージでそれらをReadOnlyに設定していることです。
Attachmentパッケージ変数に値を指定するとすべて正常に機能しますが、指定しないとスクリプトが失敗します。スクリプトを使用してメールを送信するときに、添付ファイルを常に送信したいとは限りません。BIDSのSSISパッケージのAttachement変数に値が指定されていない場合、スクリプトタスクが本文のメッセージのみを送信し、失敗しないようにコードを変更したいと思います。
また、可能であれば、添付ファイルを送信すると、複数の添付ファイルを送信できるようになります。また、SSISですべてが機能する必要がなくなったように見えるため、スクリプトを設定したので、SendMail Task
SSISで設定されたスクリプトと変数だけですべてが機能することにも気づきました。
に接続して、それらを一緒に機能させることはできませんScript Task
かSend Mail Task
?
これが私のスクリプトタスクコードです:
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Net.Mail
Imports System.Net
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Enum ScriptResults
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum
Public Sub Main()
MsgBox(Dts.Variables("Username").Value.ToString)
Dim myHtmlMessage As MailMessage
Dim mySmtpClient As SmtpClient
Dim mailAuthentication As System.Net.NetworkCredential
mailAuthentication = New System.Net.NetworkCredential( _
Dts.Variables("Username").Value.ToString(), _
Dts.Variables("Password").Value.ToString())
myHtmlMessage = New MailMessage( _
Dts.Variables("From").Value.ToString(), _
Dts.Variables("To").Value.ToString(), _
Dts.Variables("Subject").Value.ToString(), _
Dts.Variables("Body").Value.ToString())
myHtmlMessage.Attachments.Add(New Attachment(Dts.Variables("Attachments").Value.ToString))
mySmtpClient = New SmtpClient(Dts.Variables("SMTPServer").Value.ToString(), Dts.Variables("Port").Value.ToString())
mySmtpClient.UseDefaultCredentials = False
mySmtpClient.Credentials = mailAuthentication
mySmtpClient.EnableSsl = True
mySmtpClient.Send(myHtmlMessage)
Dts.TaskResult = ScriptResults.Success
End Sub
End Class