无法使用JavaMail读取邮件内容

我正在尝试使用JavaMail阅读邮件内容

 Object msg = message.getContent(); Multipart mp = (Multipart) msg; for(int k = 0; k < mp.getCount(); k++) { BodyPart bp = mp.getBodyPart(k); if (bp.isMimeType("text/plain")) { String s = (String) bp.getContent(); System.out.println("Content:" + s); } else if(bp.isMimeType("text/html")) { String s = (String) bp.getContent(); System.out.println("Content:" + s); } } 

但是我收到以下错误:

 java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.Multipart 

我该如何删除?

返回对象的类型取决于内容本身。 为text/plain内容返回的对象通常是String对象。 为multipart内容返回的对象始终是Multipart子类。

使用perator instanceof ,找出对象的哪个类。

 Object content = message.getContent(); if(content instanceof String) { ... } else if(content instanceof Multipart) { ... } 
 Object msg = message.getContent(); Multipart mp = (Multipart) msg; 

message.getContent()不一定需要是多部分消息 – 如果它不是multipart,它将纯字消息内容作为字符串返回。

 if (msg istanceof Multipart) { // your multipart handling code } else { String s = (String) msg; System.out.println("Content:" + s); } 

-编辑-

还有第三种情况,当返回输入流时: http : //docs.oracle.com/javaee/6/api/javax/mail/Part.html#getContent()

似乎发送的电子邮件不是Multipart内容类型。 检查电子邮件是否首先包含附件:

 String contentType = message.getContentType(); if (contentType.contains("multipart")) { }