.NET: проблемы с созданием вложения электронной почты из MemoryStream

Я использую следующий метод для создания вложения из MemoryStream:

public void AddAttachment(Stream stream, string filename, string mimeType)
{
  byte[] buffer = ((MemoryStream) stream).GetBuffer();
  Attachment attachment = new Attachment(stream, filename, mimeType);
  _mail.Attachments.Add(attachment);
}

Обратите внимание, что первая строка не является необходимой для функции прикрепления, просто полезно иметь под рукой byte[] во время отладки, чтобы я мог видеть, насколько он велик. (Обычно он содержит около 80 000 элементов.)

Код работает нормально, электронное письмо отправляется. Когда Outlook получает электронное письмо, в папке «Входящие» отображается символ вложения, но когда вы заходите в электронное письмо, вложения там нет.

К сожалению, у меня нет доступа к почтовому серверу, чтобы узнать больше об электронной почте, например. как выглядит вложение, его размер и т.д.

Может ли кто-нибудь предложить, какие свойства аргумента MemoryStream могут сказать мне, если он каким-то образом недействителен для вложения? Или подумайте о чем-нибудь еще, что я мог бы попробовать?

Спасибо.

Дэйвид


person David    schedule 10.06.2010    source источник
comment
Но вложения в конце концов являются файлами. Почему бы не создавать поддельные/фиктивные файлы вместо использования MemoryStream?   -  person Marcote    schedule 10.06.2010
comment
Потому что я хочу использовать MemoryStream.   -  person David    schedule 10.06.2010
comment
Это точный код, который у меня есть, но, как говорит Дэвид М в своем ответе, я сначала делаю stream.Position = 0, и это работает для меня.   -  person Hans Olsson    schedule 10.06.2010


Ответы (1)


Сбрасывали ли вы положение потока памяти на 0 после записи в него своего контента?

person David M    schedule 10.06.2010
comment
Вот и все! Вот что это было! Большое спасибо. - person David; 10.06.2010
comment
Без проблем. Рад, что это было так просто. - person David M; 10.06.2010
comment
Интересное расписание концертов кстати. Где тема New World Symphony или Star Wars? ;) - person David; 10.06.2010
comment
New World Symphony, я думаю, выйдет в июне 2011 года, а «Звездные войны» мы сделали три или четыре года назад... ;) - person David M; 10.06.2010