Напишите html-контент в почту, используя поток - PullRequest
0 голосов
/ 24 августа 2009

У меня есть поток, загруженный с HTML, который я получил из экспорта. Я могу взять этот html из потока в байте [] (есть ли другой способ?), И я хочу записать этот байт [] в тело письма html.

Причина для этого заключается в том, что я хочу экспортировать отчет в html и использовать эти данные в теле письма вместо того, чтобы экспортировать его в pdf и отправить в виде вложения.

Надеюсь, это достаточно ясно, дайте мне знать, если мне нужно что-то добавить.

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2009

Вы можете использовать сообщение Multipart Mime и передавать поток также в конструктор AlternateView, просто не закрывайте поток и не очищайте его до тех пор, пока вы не отправите сообщение (вызов MailMessage.Dispose () для очистки для вас, если хотите). Если вы используете свое решение, убедитесь, что для mail.IsBodyHtml установлено значение true, чтобы тип содержимого был установлен правильно, иначе принимающий почтовый клиент может не отображать HTML как HTML, так как он будет считать его простым текстом. Если вывод почты выглядит забавно в вашем почтовом клиенте, возможно, поэтому.

Код будет выглядеть примерно так (урезано только до соответствующих частей):

MailMessage message = new MailMessage();
message.AlternateViews.Add(new AlternateView(stream, new ContentType("text/HTML"));
// do NOT set Body, IsBodyHtml, or ContentType on MailMessage or 
// you'll mess up the mime types

smtpClient.Send(message);
0 голосов
/ 24 августа 2009

Я нашел это. Это очень просто, хотя я не нашел желаемого результата, имея форматированный вывод непосредственно в почту, вопрос был больше о том, как использовать байты, хранящиеся в потоке, для вывода HTML.

Я беру поток и создаю StreamReader:

            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);

Затем в теле почтового объекта я читаю содержимое потока, используя StreamReader:

mail.Body = reader.ReadToEnd();

Вот и все. Что ты думаешь?

...