2008-11-21 4 views
6

Я пытаюсь прикрепить вложенное PDF-файл к электронному письму, отправленному с помощью System.Net.Mail. Элемент добавления добавок выглядит следующим образом:поврежденные вложения электронной почты в .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); 
} 

Проблема в том, что вложение повреждено на другом конце. Я нашел некоторое обсуждение этой проблемы here, однако решение, упомянутое на этой странице, использовало System.Web.Mail.MailAttachment, которое было устарело в .NET 2.0.

Я попытался изменить TransferEncoding в классе Attachment (который заменяет MailAttachment), но не повезло. Кто-нибудь решил это на .NET 2.0?

ответ

10

Вы пытались сделать pdfStream.Seek(0,SeekOrigin.Begin) перед созданием вложения для сброса потока в начало?

+0

Да, это был он. Я думаю, что вся кодировка была красной селедкой :) – mlenarz 2008-11-21 15:54:05

1

Вы проверили, что документ PDF еще не поврежден в массиве pdfData? Попробуйте записать это в файл, а затем открыть его.

Приветствия
Kev

+0

Да, попробовал. Спасибо за предложение. – mlenarz 2008-11-21 15:53:32