2013-04-25 36 views
19

我必須在Java中實現一個IMAP客戶端。Java中的IMAP客戶端:JavaMail API或Apache Commons Net?

使用Apache Commons Net庫有哪些優勢?它是否使得實現更健壯,更靈活?

我該如何處理返回值,它總是會產生字符串。

例如:

public static void main(String[] args) throws Exception { 
    IMAPClient client = new IMAPClient(); 
    client.connect(SERVER); 
    client.login(USERNAME, PASSWORD); 
    client.select("INBOX"); 
    client.fetch("1", "body[header]"); 
} 

,我們可以直接通過

client.addProtocolCommandListener(new PrintCommandListener(System.out, true)); 

但我怎樣才能得到文件夾,文件夾實例,代替純串輸出的列表輸出字符串?

+1

不能相信沒有發生過任何像樣的回答這個問題。 – JohnMerlino 2014-06-19 21:24:03

+0

有一個很棒的Apache Commons Mail API,爲什麼不使用它? – msrd0 2014-10-20 19:40:17

+2

該問題應該作爲離題,作爲推薦請求而結束。 – EJP 2014-10-20 21:27:05

回答

13

短篇小說:它取決於您的真實需求。

如果你的客戶主要集中在發送和閱讀郵件,則的JavaMail API是一個事實上的標準的高層次的API,它會簡單得多撰寫郵件,添加頁眉和/或附着物。

在另一方面,如果你打算提供IMAP協議的一切準備,較低級阿帕奇百科全書網庫將允許更詳細的操作,在多個鍋爐板代碼進行簡單的成本操作。

只是爲了完成這個答案,你不應該忘記它根據項目的home page建立在Java郵件API,它旨在簡化的頂部Apache的通用電子郵件。它比JavaMail更接近Commons Net。

不知道更多的人願意做什麼,這是很難給出一個更精確的答案...

+0

* Apache Commons Email,建立在JavaMail API的基礎之上,它旨在簡化*它是否實際上簡化了所有內容? – user7610 2014-10-21 20:25:22

+0

@ user7610:說實話,我從來沒有使用它,只引用項目主頁上寫的內容。 – 2014-10-21 21:22:46

+3

個人觀點:Commons郵件是「更簡單」的,因爲它的API試圖以用戶的方式來考慮電子郵件,而JavaMail API公開了故事的MIME端。 從技術上講,Javamail是一個自然的API。因此,在Javamail中「添加附件」意味着從SinglePart轉換爲Multipart Mime,處理每個部分的頭文件,Q編碼這個或那個,以及所有。 Commons Mail將有一個'addAttachment'方法來處理文件名和編碼... 但是,當涉及到像啓用IMAP/SSL和SMTP身份驗證這樣的高級配置時,兩者都具有相同的腳位。 – GPI 2014-10-24 08:45:16

2

我怎樣才能得到文件夾列表作爲文件夾實例而不是純字符串輸出?

它看起來像apache IMAPClient是一個圍繞IMAP協議的低級包裝,因此沒有提供比字符串更漂亮的東西。對於更高級別的API,您可以查看JavaMail庫:

Session session = Session.getDefaultInstance(System.getProperties(),null); 
Store store = session.getStore("imaps"); 
store.connect(this.host, this.userName, this.password); 

// Get default folder 
Folder folder = store.getDefaultFolder(); 

// Get any folder by name 
Folder[] folderList = folder.list();