提问者:小点点

无法使用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

如何删除它?


共3个答案

匿名用户

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

使用operator < code > instance of ,找出对象的类别。

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

匿名用户

Object msg = message.getContent();
Multipart mp = (Multipart) msg;

< code > message . get content()不一定需要是多部分消息-如果它不是多部分消息,它将以字符串形式返回普通消息内容。

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()

匿名用户

发送的电子邮件似乎不是多部分内容类型。首先检查电子邮件是否有附件:

String contentType = message.getContentType();

if (contentType.contains("multipart")) {

}