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