Я использую следующий метод для создания вложения из 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 могут сказать мне, если он каким-то образом недействителен для вложения? Или подумайте о чем-нибудь еще, что я мог бы попробовать?
Спасибо.
Дэйвид
stream.Position = 0
, и это работает для меня. - person Hans Olsson   schedule 10.06.2010