2008-11-21 5 views
6

J'essaye d'attacher une pièce jointe de pdf à un email étant envoyé avec System.Net.Mail. La partie ajoutée attache ressemble à ceci:pièces jointes d'email corrompu dans .NET

using (MemoryStream pdfStream = new MemoryStream()) 
{ 
    pdfStream.Write(pdfData, 0, pdfData.Length); 

    Attachment a = new Attachment(pdfStream, 
     string.Format("Receipt_{0}_{1}.pdf", jobId, DateTime.UtcNow.ToString("yyyyMMddHHmm"))); 

    msg.Attachments.Add(a); 

    SmtpClient smtp = new SmtpClient(serverName, port); 
    smtp.Credentials = new NetworkCredential(fromEmailName, fromEmailPassword); 
    smtp.Send(msg); 
} 

Le problème est que l'attachement est corrompu à l'autre bout. J'ai trouvé une discussion de ce problème here, cependant la solution mentionnée sur cette page a utilisé System.Web.Mail.MailAttachment, qui a été rendu obsolète dans .NET 2.0.

J'ai essayé de changer le TransferEncoding dans la classe Attachment (qui remplace MailAttachment), mais n'a pas eu de chance. Est-ce que quelqu'un a résolu ceci sur .NET 2.0?

Répondre

10

Avez-vous essayé de faire un pdfStream.Seek(0,SeekOrigin.Begin) avant de créer la pièce jointe pour réinitialiser le flux au début?

+0

Eh oui, c'est tout. Je suppose que tout le codage était un harcèlement rouge :) – mlenarz

1

Avez-vous vérifié que le document PDF n'est pas déjà corrompu dans le tableau pdfData? Essayez d'écrire cela dans un fichier puis ouvrez-le.

Vive
Kev

+0

Ouais, j'ai essayé ça. Merci pour la suggestion, cependant. – mlenarz

Questions connexes