无法在 WebView2 上的 HTMLBody 中查看嵌入的图像

Unable to view embedded images in HTMLBody on WebView2

提问人:Adeleke Oluwasesan 提问时间:6/3/2023 最后编辑:jmcilhinneyAdeleke Oluwasesan 更新时间:6/3/2023 访问量:129

问:

我正在尝试将电子邮件从 Microsoft Outlook 读取到 WinForms(VB.NET) 应用程序中。我可以从 Outlook 加载电子邮件,然后在 Webview2 中显示 HTMLBody,但图像显示一个损坏的图标。HTMLBody 中的图像似乎是嵌入的,其格式如下:

<img border=0 width=89 height=49 style='width:.9236in;height:.5069in' id="Picture_x0020_3" src=cid:[email protected]>

我已经使用了许多已经显示的解决方法,即使用 .我的代码如下所示:SetVirtualHostNameToFolderMapping

' Get the email body as HTML content
Dim htmlBody As String = selectedMailItem.HTMLBody 

' Create a new local folder to store the HTML content
Dim folderPath As String = "C:\Temp\"

Directory.CreateDirectory(folderPath) 

' Create a unique file name for the HTML content
Dim fileName As String = Guid.NewGuid().ToString().Substring(0, 5) + ".html"
Dim filePath As String = Path.Combine(folderPath, fileName) 

' Save the HTML content to the local file
File.WriteAllText(filePath, htmlBody) 

' Map the virtual host name to the local folder
Await webView.EnsureCoreWebView2Async(Nothing)

' MsgBox(folderPath)

webView.CoreWebView2.SetVirtualHostNameToFolderMapping("localhost", folderPath, CoreWebView2HostResourceAccessKind.DenyCors)

' Load the HTML content into the WebView control
Dim c_nav As String = (http://localhost/ + fileName) 

'webView.CoreWebView2.Navigate(c_nav)

webView.Source = New Uri(c_nav)

我决定将其保存在一个临时文件中,我计划实施一种立即删除的方法。我尝试使用 .NavigateToString,它显然不起作用,因为它不支持额外的 Web 资源。对于 CoreWebView2HostResourceAccessKind.DenyCors,我尝试了 .allow 和 .拒绝,我仍然得到了损坏的图像图标。有没有其他可以尝试的解决方法,或者我做错了?

我期待图像能够正确加载

HTML vb.net 窗体 WebView2

评论

0赞 nbk 6/3/2023
检查您的代码c_nav看起来不像是生成了正确的字符串
0赞 Adeleke Oluwasesan 6/3/2023
除了图像未正确加载外,其他所有内容均正确读取
0赞 David Risney 6/3/2023
不要用作 SetVirtualHostNameToFolderMapping 主机名。我不确定这是否是导致您的图像无法加载的原因,但无论哪种方式,您都不应该替换 localhost 的含义。您应该使用类似 .结尾 也避免了潜在的性能问题。localhostapp.example.example
0赞 Adeleke Oluwasesan 6/3/2023
好的,谢谢,虽然没有任何区别

答: 暂无答案