有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    通过简单地迭代文件系统(我有maildir格式),最终解决了我的问题我猜Java Mail API为store.connect中的每个用户创建了新的dovecot身份验证,而它应该只连接一次(使用dovecot身份验证),然后为每个用户登录(使用dovecot imap登录)。这就是为什么每次迭代我都要等1分钟——在dovecot配置中,auth进程是std idle。我不确定,但看起来是这样

    apachelib工作速度很快,但它只是在测试ping服务器库,检查连接和其他imap操作。它返回有关操作的布尔结果,但不返回有用信息(