2013-06-21 77 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