我正在编写一个代码,它使用SSIS 2008r2中的脚本任务向收件人发送电子邮件。填充所有地址框(To,Cc和Bcc)时它工作正常,但是当其中一个框为空/空时我收到错误。我希望有这个选项让这些框为空。这是我正在处理的代码:
Public Sub SendMailMessage( _
ByVal From As String, ByVal SendTo As String, _
ByVal SendCc As String, ByVal SendBcc As String, _
ByVal Subject As String, ByVal Body As String, _
ByVal Attachment As String, ByVal IsBodyHtml As Boolean, ByVal Server As String)
Dim htmlMessage As MailMessage
Dim mySmtpClient As SmtpClient
Dim myAttachment As Attachment
Dim myBcc As MailAddress = New MailAddress(SendBcc)
Dim myCc As MailAddress = New MailAddress(SendCc)
htmlMessage = New MailMessage( _
From, SendTo, Subject, Body)
myAttachment = New Attachment(Attachment)
htmlMessage.IsBodyHtml = IsBodyHtml
htmlMessage.Attachments.Add(myAttachment)
htmlMessage.CC.Add(myCc)
htmlMessage.Bcc.Add(myBcc)
mySmtpClient = New SmtpClient(Server)
mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials
mySmtpClient.Send(htmlMessage)
End Sub
Public Sub Main()
Dim htmlMessageTo As String = _
Replace(Dts.Variables("HtmlEmailTo").Value.ToString, ";", ",")
Dim htmlMessageCC As String = _
Replace(Dts.Variables("HtmlEmailCc").Value.ToString, ";", ",")
Dim htmlMessageBCC As String = _
Replace(Dts.Variables("HtmlEmailBcc").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 MailBody As String = File.ReadAllText(htmlMessageBody)
Dim htmlAttachments As String = _
Dts.Variables("HtmlEmailAttachment").Value.ToString
Dim smtpServer As String = _
Dts.Variables("HtmlEmailServer").Value.ToString
SendMailMessage( _
htmlMessageFrom, htmlMessageTo, htmlMessageCC, _
htmlMessageBCC, htmlMessageSubject, MailBody, htmlAttachments, _
True, smtpServer)
Dts.TaskResult = ScriptResults.Success
End Sub
答案 0 :(得分:3)
非常简单:如果它们是空的,不要添加CC或BCC - 请查看MailAddressCollection的文档 - 它清楚地表明如果值为空或NULL,则引发ArgumentNullException或ArgumentException
If Not String.IsNullOrEmpty(myCC) Then
htmlMessage.CC.Add(myCc)
End If
If Not String.IsNullOrEmpty(myBcc)) Then
htmlMessage.Bcc.Add(myBcc)
End If
注意:VB语法可能是错误的,但这就是想法。