使用流在邮件中编写html内容

时间:2009-08-24 03:24:26

标签: .net html email stream activereports

我有一个从导出中获取HTML的流。我可以在一个byte []中从流中获取这个html(还有其他方法吗?),我想将这个byte []写入一个html邮件正文。

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

希望它足够清楚,如果我需要添加内容,请告诉我。

由于

2 个答案:

答案 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);