在WPF Webbrowser中查看HTML电子邮件

时间:2013-10-31 18:59:50

标签: wpf vb.net webbrowser-control alternateview

在我的应用程序中,我在完成订单后向客户发送HTML电子邮件收据。我想要做的是在webbrowser控件中预览它。

我的代码工作正常,但浏览器中缺少图像。

我在AlternateView中创建HTML,如下所示:

Dim hview As AlternateView = AlternateView.CreateAlternateViewFromString(ReadTemplate(order), Nothing, "text/html")

然后遍历他们订购的图像并添加如下:

Dim M As New LinkedResource(ResizeAndRotate(I.Path), Net.Mime.MediaTypeNames.Image.Jpeg) With {.ContentId = "Main" & cnt}
hview.LinkedResources.Add(M)

然后从hview流中返回一个文档:

Dim ObjDoc As New HTMLDocument
Dim Doc As IHTMLDocument2 = ObjDoc
Dim reader As New IO.StreamReader(hview.ContentStream)
Doc.write(reader.ReadToEnd)
Return ObjDoc

我如何从流中获取图像?

2 个答案:

答案 0 :(得分:1)

我不相信你可以使用内存中的图像。您需要将它们保存到硬盘驱动器,即使是暂时的。您必须在HTML中引用它们,如下所示:

<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />

答案 1 :(得分:1)

您可以使用base64对图像数据进行编码,并将其嵌入页面中,如Data URI scheme所支持。例如:

<!-- http://en.wikipedia.org/wiki/Data_URI_scheme -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="/>

当然,这会增加页面大小的开销,这可能会有很大的影响,具体取决于原始图像大小。