0

我有一个加载了从导出中获得的 HTML 的流。我可以从流中以 byte[] 的形式获取这个 html(还有其他方法吗?),并且我想将此 byte[] 写入 html 邮件正文。

这样做的原因是我想将报告导出为 html,并在邮件正文中使用此数据,而不是将其导出为 pdf 并作为附件发送。

希望它足够清楚,让我知道是否需要添加一些东西。

谢谢

4

2 回答 2

0

我找到了。这很简单,虽然我没有找到我想要的结果,直接将格式化输出到邮件,问题更多是关于如何使用存储在流中的字节来输出html。

我获取流并创建一个 StreamReader:

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

然后,在邮件对象的正文中,我使用 StreamReader 读取流的内容:

mail.Body = reader.ReadToEnd();

就这样。你怎么看?

于 2009-08-24T03:39:13.463 回答
0

您可以使用 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);
于 2009-08-29T07:18:05.753 回答