2010-07-07 20 views
10

Tengo una matriz de bytes que es esencialmente un .docx codificado recuperado de la base de datos. Intento convertir este byte [] en su archivo original y convertirlo en un archivo adjunto a un correo sin tener que almacenarlo primero como un archivo en el disco. ¿Cuál es la mejor manera de hacerlo?Cómo convertir una matriz de bytes al adjunto de correo

public MailMessage ComposeMail(string mailFrom, string mailTo, string copyTo, byte[] docFile) 
{ 
    var mail = new MailMessage(); 

    mail.From = new MailAddress(mailFrom); 

    mail.To.Add(new MailAddress(mailTo)); 
    mail.Body = "mail with attachment"; 

    System.Net.Mail.Attachment attachment; 

    //Attach the byte array as .docx file without having to store it first as a file on disk? 
    attachment = new System.Net.Mail.Attachment("docFile"); 
    mail.Attachments.Add(attachment); 

    return mail; 
} 

Respuesta

16

Hay un overload of the constructor de Attachment que lleva una corriente. Puede pasar en el archivo directamente mediante la construcción de un MemoryStream utilizando el byte[]:

MemoryStream stream = new MemoryStream(docFile); 
Attachment attachment = new Attachment(stream, "document.docx"); 

El segundo argumento es el nombre del archivo, de la que se infiere que el tipo MIME. Recuerde llamar al Dispose() en el MemoryStream una vez que haya terminado con él.

Cuestiones relacionadas