J'ai un problème usuel avec ma pièce jointe memorystream sur un projet VB.net. J'appelle un membre partagé (SendMail) passant dans un objet client et un flux de mémoire d'un fichier à envoyer en pièce jointe. Dans le "SendMail" il appelle deux fonctions distinctes pour préparer un e-mail régulier et un autre pour un e-mail signé numériquement. Le problème que j'ai est que je reçois l'email signé numériquement parfait, cependant, dans l'email normal, la pièce jointe est vide et le nom de fichier a été ajouté (64 B). Si je désactive la partie de la signature numérique, les courriers réguliers fonctionnent correctement. Il semble que le flux de données change quelque part dans la signature numérique.problème usuel avec la pièce jointe system.net.mail
Voici la façon dont je fais les appels
mailHelper.SendMail(cust, attachment)
withing la mailHelper CLASSE
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
Si j'essayez ce qui suit, il fonctionne très bien, cependant, est-ce la bonne solution?
messages.Add(SendUnSignedMail(cust, New MemoryStream(attachment.ToArray())))
messages.Add(SendSignedMail(cust, New MemoryStream(attachment.ToArray())))