Просмотр электронной почты в формате HTML в веб-браузере WPF
В моем приложении я отправляю квитанции по электронной почте клиентам после завершения заказа. То, что я хотел бы сделать, это просмотреть это в элементе управления веб-браузера.
Код у меня работает нормально, но изображения в браузере отсутствуют.
Я создаю HTML в AlternateView, как это:
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 ответа
Я не верю, что вы можете использовать изображения из памяти. Вам нужно будет сохранить их на жесткий диск, даже временно. Вы должны ссылаться на них в своем HTML-коде примерно так:
<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />
Вы можете закодировать данные изображения с помощью base64 и встроить их в строку на странице, как это поддерживается схемой Data URI. Пример:
<!-- http://en.wikipedia.org/wiki/Data_URI_scheme -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
Конечно, это добавило бы некоторые накладные расходы к размеру страницы, которые могут быть существенными, в зависимости от исходного размера изображения.