Преобразование с практическими рекомендациями массив байтов к почтовому вложению

У меня есть массив байтов, который является по существу закодированным .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;
}
10
задан Oysio 7 July 2010 в 21:35
поделиться

1 ответ

Имеется перегрузка конструктора из вложения , принимающего поток. Вы можете передать файл напрямую, построив MemoryStream с использованием байта [] :

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

Второй аргумент - это имя файла, из которого будет использоваться mime-тип. предполагаемый. Не забудьте вызвать Dispose () для MemoryStream , как только вы закончите с ним.

17
ответ дан 3 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: