поврежденные вложения электронной почты в .NET - PullRequest
6 голосов
/ 21 ноября 2008

Я пытаюсь прикрепить вложение в формате PDF к электронному письму, отправляемому с помощью System.Net.Mail. Часть для добавления вложений выглядит следующим образом:

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);
}

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

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

Ответы [ 2 ]

11 голосов
/ 21 ноября 2008

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

1 голос
/ 21 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...