if (contentType.contains("multipart")) {
// content may contain attachments
Multipart multiPart = (Multipart) message.getContent();
numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount++) {
BodyPart part = multiPart.getBodyPart(partCount);
String disposition = part.getDisposition();
InputStream inputStream = null;
if (disposition == null)
{
MimeBodyPart mbp = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (mbp.getContent() instanceof MimeMultipart){
MimeMultipart mmp = (MimeMultipart) mbp.getContent();
messageContent = mmp.getBodyPart(0).getContent().toString();
//System.out.println("bodyContent " + bodyContent);
}
else
{
messageContent = multiPart.getBodyPart(partCount).getContent().toString();
}
}
else if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
// this part is attachment
String fileName = part.getFileName();
attachFiles += fileName + ", ";
//part.saveFile(saveDirectory + File.separator + fileName);
}else if (Part.INLINE.equalsIgnoreCase(part.getDisposition())) {
// this part is attachment
String fileName = part.getFileName();
attachFiles += fileName + ", ";
// mbp.saveFile(saveDirectory + File.separator + fileName);
}
else {
// this part may be the message content
messageContent = part.getContent().toString();
}
}
if (attachFiles.length() > 1) {
attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
}
} else if (contentType.contains("text/plain") || contentType.contains("text/html")) {
Object content = message.getContent();
if (content != null) {messageContent = content.toString(); }
}
现在这种类型的消息文本/ plain,text / html运行良好。问题是电子邮件multipart / related当邮件有附件而内容是HTML,然后得到一些新闻而有些则没有。我注意到它依赖于这一行:
messageContent = mmp.getBodyPart(0)。 getContent()。 toString();
如果不是“0”而是“partCount”获得除了一个特定的所有,如果不是“0”是“1”,那么这个特定的并且不向其他人充电。 numberOfParts这个特定的消息是“3”而另一个是“2”。我不知道出了什么问题,可能会传递错误的参数?
答案 0 :(得分:0)
我不确定您要解决的问题,但以防这JavaMail FAQ entry可能会有所帮助。
multipart / mixed和multipart / related非常相似,因为它们有一个主要部分和一堆通常被认为是“附件”的其他部分。有时,性格会告诉你它是一种依恋,有时它不会。有些邮寄者在使用处置方面并不十分一致。
其中一个不寻常的案例是多部分/另类,但听起来并不像你正在运行的问题。