Как добавить вложение электронной почты из массива байтов?

У меня есть byte[] с содержимым файла. Я хотел бы отправить его в виде вложения с помощью System.Net.Mail.

Я заметил, что класс приложения имеет 1 перегрузку, которая принимает поток.

Attachment att = new Attachment(Stream contentStream,string name);

Можно ли передать byte[] через эту перегрузку?

Ответ 1

Простейший способ:

Attachment att = new Attachment(new MemoryStream(bytes), name);

Обратите внимание, что если вы не делаете фанки с асинхронными операциями, MemoryStream безопасно оставить без изменений, что может облегчить вам жизнь. По общему признанию, нет гарантии, что это будет правдой в будущем, но я думаю, что это вряд ли изменится. Я не вижу никаких указаний относительно того, распоряжается ли распоряжением привязанность к его потоку: (

Ответ 2

Вам нужно преобразовать byte[] в MemoryStream с помощью перегрузки MemoryStream.

Attachment att = new Attachment(new MemoryStream(myBytes), name);

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