Nullable CC和BCC通过SSIS发送电子邮件

时间:2017-07-03 17:25:44

标签: sql vb.net

我正在编写一个代码,它使用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

1 个答案:

答案 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语法可能是错误的,但这就是想法。