【问题标题】:JavaMail don't read MimeMultipart emailsJavaMail 不阅读 MimeMultipart 电子邮件
【发布时间】:2012-12-28 09:29:23
【问题描述】:
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”。不知道怎么回事,可能是传错了参数?

【问题讨论】:

    标签: jakarta-mail


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2016-02-20
      • 2019-02-23
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多