Как преобразовать массив байтов в почтовую вставку
У меня есть массив байтов, который по существу является закодированным .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;
}
Ответы
Ответ 1
Существует перегрузка конструктора Attachment
, который принимает поток. Вы можете передать файл напрямую, построив MemoryStream с помощью byte[]
:
MemoryStream stream = new MemoryStream(docFile);
Attachment attachment = new Attachment(stream, "document.docx");
Второй аргумент - это имя файла, из которого будет выведен тип mime. Не забудьте вызвать Dispose()
на MemoryStream
после того, как вы закончите с ним.