在WPF Webbrowser中查看HTML电子邮件

在WPF Webbrowser中查看HTML电子邮件,wpf,vb.net,webbrowser-control,alternateview,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(Re

在我的应用程序中,我在完成订单后向客户发送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)
<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />
然后循环浏览他们订购的图像并按如下方式添加:

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)
<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />
然后从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

如何从流中获取图像?

我不相信您可以使用内存中的图像。您需要将它们保存到硬盘,即使是暂时保存。您必须在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)
<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />

您可以使用base64对图像数据进行编码,并将其内嵌到页面上,如所支持的那样。例如:

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


当然,这会给页面大小增加一些开销,这可能会很大程度上取决于原始图像的大小

谢谢你的回复。我将此标记为答案,因为这是我使用的方法。