【问题标题】: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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多