如何在java中解析原始mime内容?

Posted

技术标签:

【中文标题】如何在java中解析原始mime内容?【英文标题】:How to parse raw mime content in java? 【发布时间】:2013-11-01 17:39:07 【问题描述】:

我有包含 html 内容、内嵌图像和附件的原始 mime 消息。

我想解析和显示 html 页面中的内容,就像邮件客户端显示的一样。

是否有任何 java 库或方法可用于解析原始 mime 内容?

【问题讨论】:

在哪里显示?摆动组件? html页面? @MaVRoSCy 我想在 html 页面中显示内容。 对象的类型是什么?是 MimeMessage 还是包含消息的 String? @BenoitWickramarachi 字符串 mime 内容(内容与在 gmail 中显示原始消息相同) 好的,你能给我们看一些代码吗?您如何检索消息? 【参考方案1】:

你需要读取文件,然后创建一个 MimeMessage:

   // read the file
    StringBuffer fileData = new StringBuffer(1000);
    BufferedReader reader = new BufferedReader(new FileReader(new File(/*PATH*/)));
    char[] buf = new char[1024];
    int numRead = 0;
    while ((numRead = reader.read(buf)) != -1) 
        fileData.append(buf, 0, numRead);
    
    reader.close();



// Create a MimeMessage


Properties props = System.getProperties(); 
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session, new ByteArrayInputStream(fileData.toString().getBytes()));

现在您有了 mime 消息,您可以使用以下方法访问其内容:

message.getContent();

内容类型将取决于 mime 类型(可以是字符串、Multipart 对象...)

这是 MimeMessage 的 JavaDoc。

【讨论】:

在调用 MimeMessage 构造函数之前不需要复制数据;只需直接将文件提供给它,例如,使用SharedFileInputStream。

以上是关于如何在java中解析原始mime内容?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中解析 MIME 发件人 (RFC 822)

如何在java中发送具有不同内容类型的mime multipart restful请求

如何在没有多个部分的情况下解析 MIME

如何从 Java 中的 MIME 类型确定适当的文件扩展名

重新发送 MIME 电子邮件中的标头

如何将原始电子邮件 (MIME) 从 AWS SES 转换为 Gmail?