2013-06-21 35 views
0

我试图在android中使用IMAP检索电子邮件。我设法从收件箱文件夹中检索邮件,但是在解析它们时遇到困难,特别是收到邮件的正文部分(我打算在我的应用中进一步使用)。在Android中解析javamail消息以获取正文部分

我需要的是一个函数,它接收一条消息并返回明文正文部分(如果可能,不考虑附件)。

private String getbody(Message message) {   

    try { 
     Object m=message.getContent(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
      e.printStackTrace(); 
    } catch (MessagingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return "abc";    // THE BODY PART TO RETURN  

}

我有进口的activation.jar文件。但是使用message.getcontent();给我错误:

06-20 15:22:50.363: E/AndroidRuntime(9477):  java.lang.RuntimeException: An error occured while executing doInBackground() 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at android.os.AsyncTask$3.done(AsyncTask.java:278) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.lang.Thread.run(Thread.java:856) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  Caused by: java.lang.NoClassDefFoundError: javax.activation.DataHandler 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:651) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1420) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at com.example.jmail.MainActivity$NetworkOperation.getbody(MainActivity.java:108) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at com.example.jmail.MainActivity$NetworkOperation.doInBackground(MainActivity.java:87) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at com.example.jmail.MainActivity$NetworkOperation.doInBackground(MainActivity.java:1) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at android.os.AsyncTask$2.call(AsyncTask.java:264) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-20 15:22:50.363: E/AndroidRuntime(9477):  ... 5 more 

回答

0

您的主要问题是在JavaMail FAQ回答。

您遇到的错误与此无关。不幸的是,Android不是Java,所以它不包含javax.activation。你需要弄清楚如何把它变成Android。您可能会在StackOverflow的其他地方找到答案。

+0

非常感谢您的帮助..终于想通了:) –

1

非常感谢您的帮助..终于找到它了:)

大错误,我一直在做长期是为JRE添加的JavaMail和JavaBeans激活框架库到我的构建路径。

有javamail.jar和activation.jar(和一个additional.jar)的单独的库版本为Android专门开发一个可以找到here.

+0

thnx人分享它,我正在寻找这个问题的解决方案3小时.JavaMail API或Android的人应该在他们的官方文档中提到这一点。 – Deb