java如何使用commons ImapClient获取有用的邮件信息?不仅仅是布尔状态,而是真实信息?
我的maven是
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
我的代码如下
IMAPClient client = new IMAPClient();
client.connect("localhost");
for(50K users){
client.login(login + emailSuffix, password);
for (int i = 0; i < folders.length; i++) {
System.out.println(client.select("INOX"); //prints true, it's ok
}
}
如何使用apache commons客户端获取消息?所有方法都返回boolean或void,所以看起来只是服务器检查库,对吗是否可以通过某种方式从imapclient获取有用的信息我指的是未读消息的数量,消息对象(内容+标题+sibject)按某些术语表示,等等
当然,Java Mail api有我需要的所有功能,但在50K循环中使用它非常慢(我在other SO question上描述的Java Mail api上的工作。Commons在连接方面要快得多,但无法提供有用的信息(
# 1 楼答案
通过简单地迭代文件系统(我有maildir格式),最终解决了我的问题我猜Java Mail API为
store.connect
中的每个用户创建了新的dovecot身份验证,而它应该只连接一次(使用dovecot身份验证),然后为每个用户登录(使用dovecot imap登录)。这就是为什么每次迭代我都要等1分钟——在dovecot配置中,auth进程是std idle。我不确定,但看起来是这样apachelib工作速度很快,但它只是在测试ping服务器库,检查连接和其他imap操作。它返回有关操作的布尔结果,但不返回有用信息(