Reputation: 81292
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
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
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