У меня есть проект, в котором я использую генератор PDF для отправки файла пользователю. Мы хотели бы предоставить пользователю возможность присоединить этот файл к письму вместо этого, и у нас возникают проблемы с использованием объекта Stream и привязки вместе.
Начнем с ABCpdf, который имеет два метода сохранения: он может сохранять в Stream, или если вы даете ему строку, он попытается сохранить файл на диске там. Мы оба сделали без проблем.
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, но, может быть, только одна или две строки сложнее. Ни один из этих примеров не начинается с Stream - они всегда пытаются превратить массив в Stream, чтобы показать вам, насколько это легко или захватывать файл с диска (чего мы не можем сделать, поэтому мы взволнованы для использования потока).
В любом случае, если кто-нибудь может объяснить, что я делаю неправильно или что я должен делать, я бы очень признателен. Спасибо.