2010-07-07 6 views
10

본질적으로 DB에서 검색 한 인코딩 된 .docx 인 바이트 배열이 있습니다. 이 바이트 [] 원래 파일로 변환하고 디스크에 파일로 먼저 저장할 필요없이 메일 첨부 파일로 만들려고합니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?바이트 배열을 메일 첨부 파일로 변환하는 방법

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; 
} 

답변

16

는 스트림을 얻어 Attachmentoverload of the constructor있다. 사용자가 직접 byte[] 사용하여 MemoryStream를 구성하여 파일에 전달할 수 있습니다 :

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

두 번째 인수는 마임 타입 추론 될에서 파일의 이름입니다. 사용을 마친 후 MemoryStreamDispose()으로 전화하십시오.

관련 문제