getcontent期间的java mail classcastexception

时间:2013-07-13 11:32:30

标签: android javamail classcastexception gmail-imap

当我尝试通过getcontent()方法检索gmail内容时,我遇到了异常

java.lang.ClassCastException:com.sun.mail.imap.IMAPInpustream无法强制转换为javax.mail.Multipart

所以我将inputsream转换为字符串,但它重新包含了所有数据,包括不是text / html。但我只想要带附件的text / html数据。

我的代码:

if(contentType.contains("multipart/alternative") || contentType.contains("multipart/MIXED")){
            Log.i("content type...","inside if stmt "+contentType);
            Multipart mp = (Multipart)gmsg.getGmailContent();
            try {
                for(int k=0;k<mp.getCount();k++){
                      javax.mail.BodyPart p = mp.getBodyPart(k);
                      if("text/html".equals(p.getContentType())){
                         /* gContent.loadDataWithBaseURL("https://mail.google.com",
                                  p.getContent().toString() , "text/plain","UTF-8", null); */
                          Log.i("msg", p.getContent().toString());
                      }
                    }
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                Log.i("error", e.toString());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

我在libs文件夹中包含了mail.jar,activation.jar,additional.jar。

在谷歌搜索了很多,但没有得到任何解决方案。 Plz help..Thanks提前..

2 个答案:

答案 0 :(得分:0)

如果你想阅读字符串,那么:

替换

if("text/html".equals(p.getContentType())){

if("text/plain".equals(p.getContentType())){

答案 1 :(得分:0)

你真的应该使用isMimeType方法。你找到了msgshow.java演示程序吗?

如果JavaBeans Activation Framework(JAF)配置无法正常工作,则getContent方法可能无法将数据转换为正确的Java类。 JAF查找META-INF / mailcap文件以找出如何将MIME类型转换为Java类。 JavaMail jar文件中有这样的配置文件。如果jar文件混乱,配置文件丢失,或者类加载器无法正常工作以允许您加载这些配置文件,则转换将无效。

此外,解决方法here可能有所帮助。