2008-11-21 5 views
6

Ich versuche, eine PDF-Anlage an eine E-Mail anzuhängen, die mit System.Net.Mail gesendet wird. Der Anhang fügt folgendes hinzu:beschädigte E-Mail-Anhänge in .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); 
} 

Das Problem ist, dass der Anhang am anderen Ende beschädigt wird. Ich fand eine Diskussion über dieses Problem here, aber die Lösung auf dieser Seite verwendet System.Web.Mail.MailAttachment, die in .NET 2.0 veraltet gemacht wurde.

Ich habe versucht, die TransferEncoding in der Anlage-Klasse (die MailAttachment ersetzt), aber hatte kein Glück. Hat jemand das auf .NET 2.0 gelöst?

Antwort

10

Haben Sie versucht, eine pdfStream.Seek(0,SeekOrigin.Begin) vor dem Erstellen der Anlage zu tun, um den Stream an den Anfang zurückzusetzen?

+0

Yup, das war es. Ich denke, die ganze Kodierung Sache war ein Hering :) – mlenarz

1

Haben Sie überprüft, ob das PDF-Dokument nicht bereits im pdfData-Array beschädigt ist? Versuchen Sie, das in eine Datei zu schreiben und dann zu öffnen.

Prost
Kev

+0

Ja, versuchte das. Danke für den Vorschlag. – mlenarz

Verwandte Themen