0
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(); }
}

现在这种类型的消息 text/plain,text/html 变得很好。问题是当邮件有附件并且内容是 HTML 时,电子邮件多部分/相关,然后得到一些新闻而有些没有。我注意到它依赖于这条线:

messageContent = mmp.getBodyPart (0)。获取内容()。toString();

如果不是“0”是“partCount”,除了一个特定的,如果不是“0”是“1”,我会得到这个特定的并且不向其他人收费。numberOfParts 这个特定消息是“3”,另一个是“2”。我不知道出了什么问题,也许传递了错误的参数?

4

1 回答 1

0

我不确定您要解决什么问题,但以防万一这个JavaMail FAQ 条目可能会有所帮助。

multipart/mixed 和 multipart/related 非常相似,因为它们有一个主要部分和一堆通常被认为是“附件”的其他部分。有时性情会告诉你这是执着,有时不会。一些邮寄者在使用处置方面不是很一致。

一种不寻常的情况是多部分/替代,但听起来这不是您遇到的问题。

于 2013-01-14T21:11:00.890 回答