Java中的IMAP客户端:JavaMail API还是Apache Commons Net?
我必须用Java实现一个IMAP客户机 使用ApacheCommonsNet库有哪些优点?它是否使实现更加健壮和灵活 我必须如何处理返回值,它总是生成字符串 例如:Java中的IMAP客户端:JavaMail API还是Apache Commons Net?,java,email,imap,jakarta-mail,apache-commons,Java,Email,Imap,Jakarta Mail,Apache Commons,我必须用Java实现一个IMAP客户机 使用ApacheCommonsNet库有哪些优点?它是否使实现更加健壮和灵活 我必须如何处理返回值,它总是生成字符串 例如: public static void main(String[] args) throws Exception { IMAPClient client = new IMAPClient(); client.connect(SERVER); client.login(USERNAME, PASSWORD);
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));
但是,我如何才能将文件夹列表作为文件夹实例而不是纯字符串输出
它是使用JavaMail API编码的,但在我看来,它的接口比Apache commons库简单得多
如果您真的想使用ApacheCommons库,请查看javadocs,并查看可以传递给.select()
的其他参数
如何将文件夹列表作为文件夹实例而不是纯字符串输出
看起来ApacheImapClient是一个围绕IMAP协议的低级包装器,所以没有比字符串更奇特的了。对于更高级别的API,您可以查看库:
Session Session=Session.getDefaultInstance(System.getProperties(),null);
Store Store=session.getStore(“imaps”);
store.connect(this.host、this.userName、this.password);
//获取默认文件夹
Folder Folder=store.getDefaultFolder();
//按名称获取任何文件夹
文件夹[]folderList=文件夹.list();
短篇故事:这取决于您的实际需求
如果您的客户端主要关注发送和阅读邮件,JavaMail API实际上是一个标准的高级API,编写邮件、添加邮件头和/或附件会简单得多
另一方面,如果您打算提供IMAP协议的所有可能,较低级别的Apache Commons Net库将允许更详细的操作,但代价是为简单操作提供更多的锅炉板代码
为了完成这个答案,您不应该忘记ApacheCommons电子邮件,根据项目的设计,它是建立在Java邮件API之上的,其目的是简化Java邮件API。它更接近JavaMail,而不是Commons-Net
如果不知道自己想做什么,就很难给出更准确的答案……我最近找到了一些现代的选择:
文件夹是最容易的。open()
是现成的,应该早检查一下…
还有一个实验性的
IdleManager
,可以通过提供的ExecutorService
监视邮箱中的新邮件。真不敢相信这个问题还没有任何像样的答案。有一个很棒的Apache Commons邮件API,为什么不使用它呢?这个问题应该作为主题关闭,作为推荐请求。Apache Commons电子邮件,建立在JavaMail API之上,它旨在简化它,并且它实际上简化了任何东西吗?@user7610:老实说,我从未使用过它,只是引用了项目主页上写的内容。个人意见:Commons邮件“更简单”因为它的API试图像用户一样看待电子邮件,而JavaMail API公开了故事的MIME方面。从技术上讲,Javamail是一种自然的API。所以在Javamail中“添加附件”意味着从单部分Mime转换为多部分Mime,处理每个部分的头,Q编码这个或那个,以及所有这些。Commons Mail将有一个addAttachment
方法来处理文件名、编码。。。但是当涉及到高级配置时,比如说启用IMAP/SSL和SMTP身份验证,这两种配置都是同等的。在执行方面,两者都有利弊。