2010-04-06 8 views

Respuesta

160

manera más simple:

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

Tenga en cuenta que a menos que hagas cosas funky con operaciones asíncronas, MemoryStream es seguro dejar no vendida, lo que puede hacer la vida más fácil para usted. Es cierto que no hay garantía que eso sea cierto en el futuro, pero creo que es poco probable que cambie. No puedo ver ninguna indicación en cuanto a si la eliminación de la fijación dispone de su corriente :(

+1

Gracias Jon, exactamente lo que necesitaba! –

+2

Buen punto, noté al agregar archivos adjuntos basados ​​en archivos, Necesitaba disponer el objeto de archivo adjunto para liberar un identificador en el archivo. Seguramente, GC debería ocuparse de la secuencia porque no es una operación IO. –

+0

@JL: Sí, exactamente. –

30

Es necesario para convertir el byte[] a un MemoryStream utilizando la apropiada MemoryStream constructor overload.

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

Tenga en cuenta que el nombre parámetro a Attachment's constructor especifica el nombre del tipo de contenido del archivo adjunto, no el nombre del archivo adjunto.

+2

Parece que el parámetro de nombre es el nombre del archivo, no el tipo de contenido. Ver comentarios: https://msdn.microsoft.com/en-us/library/system.net.mime.contenttype.name.aspx –

Cuestiones relacionadas