2011-01-25 67 views
0

我有一个VB.net项目上的附件memorystream的一个常见问题。我正在调用一个共享成员(SendMail)传递一个客户对象和一个文件的内存流作为附件发送。在“SendMail”中,它会调用两个独立的函数来准备一封普通电子邮件,另一封用于数字签名的电子邮件。我遇到的问题是,我收到数字签名的电子邮件是完美的,但是,在常规电子邮件中,附件是空白的,文件名已附加(64 B)。如果我禁用数字签名的部分,普通邮件可以正常工作。它看起来像是在数字签名中改变内存流的地方。system.net.mail附件的一个常见问题

他在这里的我怎么打的电话

mailHelper.SendMail(cust, attachment) 

withing的mailHelper CLASS

Public Shared Sub SendEmail(ByVal cust As Customer, ByVal attachment As MemoryStream) 

    Dim messages As New List(Of MailMessage) 
    messages.Add(CreateUnSignedMail(cust,attachment) 
    messages.Add(CreateSignedMail(cust,attachment) 
    SendSMTPMail(messages) 
End Sub 

Private Shared Function CreateUnSignedMail(ByVal cust As Customer, ByVal attachment As MemoryStream) As MailMessage 

Dim eMail As New MailMessage() 
     With eMail 
      .//Normal properties set (like to, from etc) 

      .Attachments.Add(New Attachment(attachment, "someFilename.doc") 
     End With 
     Return eMail 
End Function 

Private Shared Function CreateSignedMail(ByVal cust As Customer, ByVal attachment As MemoryStream) As MailMessage 

Dim eMail As New SecureMailMessage() 
     With eMail 
      .//Normal properties set (like to, from etc) 

      .Attachments.Add(New SecureAttachment(attachment, "someFilename.doc") 
     End With 
     Return eMail 
End Function 


Private Shared Sub SendSMTPMail(ByVal messages As List(Of System.Net.Mail.MailMessage)) 
     Dim smtp As New SmtpClient("myServer") 
     Try 
      With smtp 
       .//Additional properties set 

       For Each email In messages 
        .Send(email) 
       Next 

      End With 

     Catch ex As Exception 
      //Log error to file. 
      Logger.Log.Error("SMTP Error", ex) 
      Throw 
     End Try 
End Sub 

如果我尝试了它的工作原理以下罚款,然而,这是正确的解决方案?

messages.Add(SendUnSignedMail(cust, New MemoryStream(attachment.ToArray()))) 
messages.Add(SendSignedMail(cust, New MemoryStream(attachment.ToArray()))) 

回答

0

假设你已经解决了这个问题给出了一个结果的延迟,但这里是我的尝试无论如何...

有相当多的重载创建一个附件,他们都不符合你的方式初始化了附件。

创建附件时,第二个参数需要为NULL或为您的附件标识有效的MIME类型。

希望这会有所帮助。