javamail-1.4.5解析通过imap接收的gmail消息时出错

javamail-1.4.5解析通过imap接收的gmail消息时出错,java,gmail,jakarta-mail,imap,Java,Gmail,Jakarta Mail,Imap,我使用javamail-1.4.5从gmail(imap)获取消息。如果内容处置有一个不带引号的参数,则getDisposition方法将失败 信息部分: Content-Transfer-Encoding: 7bit Content-Type: message/rfc822 Content-Disposition: attachment; creation-date=Wed, 11 Feb 2015 10:23:48 GMT; modification-date=Wed, 11

我使用javamail-1.4.5从gmail(imap)获取消息。如果内容处置有一个不带引号的参数,则getDisposition方法将失败

信息部分:

Content-Transfer-Encoding: 7bit
Content-Type: message/rfc822
Content-Disposition: attachment;
    creation-date=Wed, 11 Feb 2015 10:23:48 GMT;
    modification-date=Wed, 11 Feb 2015 10:23:48 GMT
例外情况:

javax.mail.internet.ParseException: Expected ';', got ","
        at javax.mail.internet.ParameterList.<init>(ParameterList.java:289)
        at javax.mail.internet.ContentDisposition.<init>(ContentDisposition.java:100)
        at javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1076)
javax.mail.internet.ParseException:应为“;”,得到“,”
在javax.mail.internet.ParameterList(ParameterList.java:289)
位于javax.mail.internet.ContentDisposition.(ContentDisposition.java:100)
位于javax.mail.internet.MimeBodyPart.getDisposition(MimeBodyPart.java:1076)
UPD1:这是我代码的一部分。我在方法handlePart的第1行出错

private void handleMessage(Message message) {
    Object content = message.getContent();
    if(content instanceof Multipart) {
        handleMultipart((Multipart) content);
    }
    else {
        handlePart(message);
    }
}

private void handleMultipart(Multipart mp) {
    for(int i = 0; i < mp.getCount(); i++) {
        Part part = mp.getBodyPart(i);
        Object content = part.getContent();
        if(content instanceof Multipart) {
            handleMultipart((Multipart) content);
        }
        else {
            handlePart(part);
        }
    }
}

private void handlePart(Part part) {
    String disposition = part.getDisposition(); //GETTING ERROR
    String contentType = part.getContentType();
    if(disposition == null) {
        if(contentType.toLowerCase().startsWith("text/html")) {
            html = (String) part.getContent();
        }
        else if(contentType.toLowerCase().startsWith("text/plain")) {
            text = (String) part.getContent();
        }
        else {
            handleAttachment(part);
        }
    }
    else if(disposition.equalsIgnoreCase(Part.ATTACHMENT)) {
        handleAttachment(part);
    }
    else if(disposition.equalsIgnoreCase(Part.INLINE)) {
        handleAttachment(part);
    }
}
private void handleMessage(消息消息){
对象内容=message.getContent();
if(多部分的内容实例){
handleMultipart((多部分)内容);
}
否则{
手持部分(信息);
}
}
私有无效句柄多部分(多部分mp){
对于(int i=0;i
消息格式不正确。是什么程序创建的消息?请将此错误报告给该程序的所有者

您可以通过将系统属性“mail.mime.parameters.strict”设置为“false”来解决此错误;见老师和同学


另外,您可能需要。

邮件格式不正确。是什么程序创建的消息?请将此错误报告给该程序的所有者

您可以通过将系统属性“mail.mime.parameters.strict”设置为“false”来解决此错误;见老师和同学


另外,您可能需要。

邮件格式不正确。是什么程序创建的消息?请将此错误报告给该程序的所有者

您可以通过将系统属性“mail.mime.parameters.strict”设置为“false”来解决此错误;见老师和同学


另外,您可能需要。

邮件格式不正确。是什么程序创建的消息?请将此错误报告给该程序的所有者

您可以通过将系统属性“mail.mime.parameters.strict”设置为“false”来解决此错误;见老师和同学


另外,您可能需要执行此操作。

由于语法错误,此操作失败。不引用是非法的。除了提交修补程序之外,对于异常情况您无能为力,而且修补内容处置和内容类型错误是一项永不间断的工作。根据我的经验,内容处理得到的错误超过了它的公平份额。我已经编写了至少12个变通方法(不适用于javamail),每个都有单元测试。这是一项艰苦的工作,可能不值得

由于您必须为未指定的C-D提供适当的回退,因此您也可以利用该回退进行错误和无意义的处置:

String disposition = null;
try {
    disposition = part.getDisposition();
} catch(ParseException x) {
    // treat Content-Disposition as unspecified if it cannot be parsed
    disposition = null;
}

顺便说一句:给自己发送一条带有“Content-type:text/plain;utf8”的消息,并检查您是否也处理了该解析异常。

它失败了,因为出现了语法错误。不引用是非法的。除了提交修补程序之外,对于异常情况您无能为力,而且修补内容处置和内容类型错误是一项永不间断的工作。根据我的经验,内容处理得到的错误超过了它的公平份额。我已经编写了至少12个变通方法(不适用于javamail),每个都有单元测试。这是一项艰苦的工作,可能不值得

由于您必须为未指定的C-D提供适当的回退,因此您也可以利用该回退进行错误和无意义的处置:

String disposition = null;
try {
    disposition = part.getDisposition();
} catch(ParseException x) {
    // treat Content-Disposition as unspecified if it cannot be parsed
    disposition = null;
}

顺便说一句:给自己发送一条带有“Content-type:text/plain;utf8”的消息,并检查您是否也处理了该解析异常。

它失败了,因为出现了语法错误。不引用是非法的。除了提交修补程序之外,对于异常情况您无能为力,而且修补内容处置和内容类型错误是一项永不间断的工作。根据我的经验,内容处理得到的错误超过了它的公平份额。我已经编写了至少12个变通方法(不适用于javamail),每个都有单元测试。这是一项艰苦的工作,可能不值得

由于您必须为未指定的C-D提供适当的回退,因此您也可以利用该回退进行错误和无意义的处置:

String disposition = null;
try {
    disposition = part.getDisposition();
} catch(ParseException x) {
    // treat Content-Disposition as unspecified if it cannot be parsed
    disposition = null;
}

顺便说一句:给自己发送一条带有“Content-type:text/plain;utf8”的消息,并检查您是否也处理了该解析异常。

它失败了,因为出现了语法错误。不引用是非法的。除了提交修补程序之外,对于异常情况您无能为力,而且修补内容处置和内容类型错误是一项永不间断的工作。根据我的经验,内容处理得到的错误超过了它的公平份额。我已经编写了至少12个变通方法(不适用于javamail),每个都有单元测试。这是一项艰苦的工作,可能不值得

由于您必须为未指定的C-D提供适当的回退,因此您也可以利用该回退进行错误和无意义的处置:

String disposition = null;
try {
    disposition = part.getDisposition();
} catch(ParseException x) {
    // treat Content-Disposition as unspecified if it cannot be parsed
    disposition = null;
}
顺便说一句:给自己发送一条带有“Content-type:text/plain;utf8”的消息,并检查您是否也处理了该解析异常。

Add yor