Запись html-контента в почтовом сообщении с использованием потока

StackOverflow https://stackoverflow.com/questions/1320351

Вопрос

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

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

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

Спасибо

Это было полезно?

Решение

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

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

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

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

mail.Body = reader.ReadToEnd();

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

Другие советы

Вы также можете использовать составное 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top