我开始使用 Java Mail,我有一些关于处理附件的问题:
如果我们的内容是一个
Multipart
ie有一个附件,那么实际附件在哪个索引处,我们可以在哪个索引处找到消息内容?我只想处理附件。这会是一个正确的方法。如果我想将给定的附件转换为字符串,只需读取附件部分的流(使用
getStream()
)并将其附加到字符串生成器,然后返回字符串?
非常感谢任何建议
我开始使用 Java Mail,我有一些关于处理附件的问题:
如果我们的内容是一个Multipart
ie有一个附件,那么实际附件在哪个索引处,我们可以在哪个索引处找到消息内容?我只想处理附件。
这会是一个正确的方法。如果我想将给定的附件转换为字符串,只需读取附件部分的流(使用getStream()
)并将其附加到字符串生成器,然后返回字符串?
非常感谢任何建议
1.)这是来自我的一个应用程序(也基于其他人的代码,但我找不到给予信用)。
如您所见,我正在递归处理一个 Part 对象(首先它实际上是一个消息)。
我删除了一些不相关的代码。
private BodyPartDOM collectBodyParts(Part part) throws IOException, MessagingException {
BodyPartDOM dom = new BodyPartDOM();
Object content = part.getContent();
if (content instanceof String) {
// process as string
} else if (content instanceof Multipart) {
Multipart innerMultiPart = (Multipart) content;
int count = innerMultiPart.getCount();
for (int i = 0; i < count; i++) {
BodyPart innerBodyPart = innerMultiPart.getBodyPart(i);
BodyPartDOM subDom = collectBodyParts(innerBodyPart);
// further recursive processing
}
} else if (content instanceof InputStream) {
// process inputStream
}
return dom;
}
2.) 如果您将其转换为字符串,请继续。但请注意例如文件流。
您可以检查内容类型的 MIME 类型。以下是来自维基百科的一些有用信息(http://en.wikipedia.org/wiki/MIME#Content-Type):
Content-Type 该头指示消息内容的互联网媒体类型,由类型和子类型组成,例如
Content-Type: text/plain 通过使用 multipart 类型,MIME 允许消息具有以树结构排列的部分,其中叶节点是任何非多部分内容类型,非叶节点是各种多部分中的任何一个类型。该机制支持:
使用 text/plain(“Content-Type:”的默认值)文本和附件(多部分/与 text/plain 部分和其他非文本部分混合)的简单文本消息。包含附加文件的 MIME 消息通常使用“Content-disposition:”标头指示文件的原始名称,因此文件类型由 MIME 内容类型和(通常是特定于操作系统的)文件扩展名回复与原始附加(多部分/与文本/纯文本部分混合,原始消息作为消息/rfc822 部分)替代内容,例如以纯文本和另一种格式(如 HTML)发送的消息(多部分/替代文本中的相同内容) /plain 和 text/html 形式)图像、音频、视频和应用程序(例如,image/jpeg、audio/mp3、video/mp4、
如何将其付诸实践可以在这里找到: http ://www.oracle.com/technetwork/java/faq-135477.html
快乐编码!