【问题标题】:java mail classcastexception during getcontentgetcontent期间的java邮件classcastexception
【发布时间】:2013-07-11 20:58:16
【问题描述】:

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

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

所以我将 inputream 转换为字符串,但它会重新处理所有数据,包括不是 text/html 的数据。但我只想要带有附件的文本/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。

在谷歌搜索了很多,但没有得到任何解决方案。 请帮助..提前谢谢..

【问题讨论】:

    标签: android jakarta-mail classcastexception gmail-imap


    【解决方案1】:

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

    替换

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

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

    【讨论】:

    • 我在 Multipart mp = (Multipart)gmsg.getGmailContent(); 行遇到异常;
    • gmsg 是一个类,我在其中存储不同的元素,如邮件主题、发件人、收件人和内容作为对象。
    • 那么您是否在 getGmailContent() 中遇到错误?如果它是您自己的类,为什么不返回 javax.mail.Multipart ,这是您尝试将其转换为的内容?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多