How to add an email attachment from a byte array?

I have a byte[] with the contents of file. I would like to send it as an attachment using System.Net.Mail.

I noticed the attachment class has 1 overload which accepts a stream.

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

Is it possible to pass the byte[] through this overload?


Simplest way:

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

Note that unless you do funky stuff with asynchronous operations, MemoryStream is safe to leave undisposed, which may make life easier for you. Admittedly there's no guarantee that that will be true in the future, but I think it's unlikely that it will change. I can't see any indication as to whether disposing of the attachment disposes of its stream :(


You need to convert the byte[] to a MemoryStream using the appropriate MemoryStream constructor overload.

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

Note that the name parameter to Attachment's constructor specifies the name of the attachment's content type, not the name of the attachment itself.