我有一个从导出中获取HTML的流。我可以在一个byte []中从流中获取这个html(还有其他方法吗?),我想将这个byte []写入一个html邮件正文。
这样做的原因是我想将报告导出为html,并在邮件正文中使用此数据,而不是将其导出为pdf并将其作为附件发送。
希望它足够清楚,如果我需要添加内容,请告诉我。
由于
答案 0 :(得分:0)
我找到了。这很简单,虽然我没有找到我想要的结果,直接将格式化的输出发送到邮件,问题更多的是如何使用存储在流中的字节来输出html。
我获取流并创建一个StreamReader:
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
然后,在邮件对象的正文中,我使用StreamReader读取了流的内容:
mail.Body = reader.ReadToEnd();
这就是全部。你觉得怎么样?
答案 1 :(得分: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);