Поток как приложение к System.Net.Mail составляет 0 байтов

у меня есть проект, где яиспользуя генератор PDF для отправки файла пользователю. Мы'мы хотели бы дать пользователю возможность прикрепить этот файл к электронному письму, и мывозникают проблемы при совместном использовании объекта Stream и логики вложений.

Мы начнем с ABCpdf, который имеет два метода сохранения: он может сохранить в поток или, если вы дадите ему строку, он 'Я постараюсь сохранить файл на диске там. Мы'мы сделали оба без проблем.

Stream stream = new MemoryStream();
myPdf.Save(stream);

Все в основном круто в этот момент -stream имеет несколько килобайт данных, и если вы сохраните файл .Save (), вы получите реальный файл с тем же числом байтов.

Таким образом, мы прикрепляем к письму на этом этапе (после инициализации почтового объекта, настройки To: и From: и т. Д.):

mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();

... что позволяет нам получить электронное письмо с 0 байтами, но с правильным именем файла.

Все примеры яПри поиске в Интернете используйте StreamReader, StreamWriter, Flush () или что-то еще. Это всегда кажетсяэто сложнее, чем просто передать поток, но может быть, только одна или две строки сложнее. Ни один из этих примеров не начинается с Stream - онивсегда пытаемся превратить массив в поток, чтобы показать вам, насколько это легко, или захватить файл с диска (что мы можем 'так и делаем, поэтому мыснова взволнован, чтобы использовать поток).

Во всяком случае, если кто-нибудь может объяснить, что яя делаю неправильно или то, что я должен делать, яЯ действительно ценю это. Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос