2017-07-03 101 views
0

我正在使用SSIS 2008r2中的脚本任务发送电子邮件给收件人的代码。当所有的地址框都被填充时(To,Cc和Bcc),它可以正常工作,但是当其中一个框为空/空时,出现错误。我想要有这个选项来让这些盒子为空。这里是我工作的代码:可通过SSIS发送电子邮件中的可空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 - 它明确指出,ArgumentNullException或ArgumentException的是,如果该值升高是空的或NULL

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

+0

除了'string'应该在VB.NET中是'String'的语法是正确的。很好的答案! –

相关问题