首页 > 解决方案 > .eml 预览与 html 正文中的图像

问题描述

语境

我正在开发 .eml 文件的预览器,但在显示 html 正文中的图像时遇到了一些问题。

实际解决方案

我能够得到如下的html正文:

MimeMessage mimeMessage = MimeMessageUtils.createMimeMessage(null, file);
MimeMessageParser parser = new MimeMessageParser(mimeMessage);
body = parser.parse().getHtmlContent(); 

但这是结果:

在此处输入图像描述

html:

...
<font size="2" face="sans-serif">Thanks</font><br>
<font size="2" face="sans-serif">Enry</font><br>
<font size="2" face="sans-serif"><br>
</font><br>
<img src="cid:0__=4EBB0EF7DFBA71E78f9e8a93df93869091@local" width="253" height="120">

这是.eml:

...
<font size="2" face="sans-serif">Thanks</font><br>
<font size="2" face="sans-serif">Enry</font><br>
<font size="2" face="sans-serif"><br>
</font><br>
<img src="cid:0__=4EBB0EF7DFBA71E78f9e8a93df93869091@local" width="253" height="120"></body></html>
--0__=4EBB0EF7DFBA71E78f9e8a93df938690918c4EBB0EF7DFBA71E7
Content-type: image/gif; 
    name="02430556.gif"
Content-Disposition: inline; filename="02430556.gif"
Content-ID: <0__=4EBB0EF7DFBA71E78f9e8a93df93869091@local>
Content-transfer-encoding: base64

R0lGODdh/QB4AOf/AAABAAEEAAMGAQcJBQoMCAwPCw8RDhIUERQVExUXFRcZFxobGRwdGx8hHiIk
IScoJiosKUclJCwtKygwLC0vLDAxLykzNCszLzEzMS02NDQ1Mzk1NFwsMDY3NTs2NVUvMWsqLEA2
Nzc5NkU1Nzg5N18vMUg2NDk7OHcqK002NU84Nzw+O1o2NFU3OXMvMogrLj5APVw4PGI3OGc2OYUv
LWk3NUFCQIIwNJEsMpMtLlI/PXA3OHU2OUdDQXs1Nnc3NZstMkRGQ1lBQE5ERF5AQaQtMG48PUZI
RWs/QK0tNIc4OJM1NmFDRE1JSElLSI84OqIzN5s1OWpEREtNSrgvNVxJR5c5OVdMTKw1Nqs1O05P
TbQ0NKY4OlRPTrwzOFBRT7U2O8QzNr82OqQ+QW1NT1NVUsY1PZ9AQ8g2OH5KTdA0Ns80O3NOUWZS
UIpIS9kzNF9UVZtERYZKSuExOFZYVdk0OnhPTtM3ONs1O+MzOd03Pd44N1tcWmVaW985PmBcW11e
XI5SUolUVl9hXnVcW3tbXINZWmNlYl1oaWplZHVjZnFlZmdoZoNjZHlmZmpraGxua4JoZ25wbrFe...

问题

有人知道我应该怎么做才能正确显示图像吗?

标签: javaemailjakarta-maileml

解决方案


html 内容将使用“cid:”和 Content-ID 而不是“http:”来引用图像。您需要一种方法来将这些 URI 解析为消息的相应部分,或者您需要重写 html 内容以使用您自己选择的新 URL,您可以安排这些 URL 来解析消息的各个部分。


推荐阅读