【问题标题】:Write html content in a mail using a stream使用流在邮件中写入 html 内容
【发布时间】:2009-08-24 03:24:26
【问题描述】:
我有一个加载了从导出中获得的 HTML 的流。我可以从流中以 byte[] 的形式获取这个 html(还有其他方法吗?),我想将这个 byte[] 写入 html 邮件正文。
这样做的原因是我想将报告导出为 html,并在邮件正文中使用此数据,而不是将其导出为 pdf 并作为附件发送。
希望它足够清楚,如果我需要添加一些内容,请告诉我。
谢谢
【问题讨论】:
标签:
.net
html
email
stream
activereports
【解决方案1】:
我找到了。很简单,虽然没有找到我想要的结果,直接将格式化输出到邮件,问题更多的是如何使用存储在流中的字节来输出html。
我获取流并创建一个 StreamReader:
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
然后,在邮件对象的正文中,我使用 StreamReader 读取流的内容:
mail.Body = reader.ReadToEnd();
就是这样。你怎么看?
【解决方案2】:
您也可以使用 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);