Java中的IMAP客户端:JavaMail API还是Apache Commons Net?

2022-09-01 13:16:54

我必须在Java中实现一个IMAP客户端。

使用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

短篇故事 :这取决于您的真实要求。

如果您的客户端主要专注于发送和阅读邮件那么JavaMail API是一个事实上的标准高级API,并且编写邮件,添加标头和/或附加内容将变得更加简单。

另一方面,如果您打算提供IMAP协议的所有可能性,那么较低级别的Apache Commons Net库将允许更详细的操作,而代价是简单操作的更多样板代码。

为了完成这个答案,你不应该忘记Apache Commons Email,根据该项目的主页,它是建立在Java Mail API之上的,它旨在简化Java Mail API。它更接近JavaMail而不是Commons Net。

如果不知道自己想做什么,就很难给出更准确的答案......


答案 2

考虑查看从Gmail检索未读电子邮件 - JavaMail API + IMAP

它是使用JavaMail API编码的,但在我看来,它的界面比Apache共享资源库简单得多。

如果你真的想使用Apache commons库,看看javadocs,看看你还可以传递给哪些其他参数。.select()


推荐