JL.
JL.

Reputation: 81292

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?

Upvotes: 127

Views: 94493

Answers (2)

Oded
Oded

Reputation: 499092

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.

Upvotes: 41

Jon Skeet
Jon Skeet

Reputation: 1501163

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 :(

Upvotes: 255

Related Questions