Javamail性能

cbz*_*cbz 5 java performance gmail imap jakarta-mail

我一直在使用javamail从IMAP服务器(当前为GMail)中检索邮件。Javamail可以非常快速地从服务器中检索特定文件夹中的消息列表(仅id),但是当我实际获取消息(仅包络甚至不包含内容)时,每条消息大约需要1-2秒。快速检索应使用哪些技术?

这是我的代码:

    try {
        IMAPStore store = null;
        if(store!=null&&store.isConnected())return;
        Properties props = System.getProperties();
        Session sessionIMAP = Session.getInstance(props, null);
        try {
            store = (IMAPStore) sessionIMAP.getStore("imaps");
            store.connect("imap.gmail.com",993,"username@gmail.com","password");
        } catch (Exception e) {
            e.printStackTrace();
        }

        IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);
        System.out.println("start");
        Message[] msgs = folder.getMessages(1,10);
        long ftime = System.currentTimeMillis();
        FetchProfile fp=new FetchProfile();
        fp.add(FetchProfile.Item.ENVELOPE);
        folder.fetch(msgs, fp);
        long time = System.currentTimeMillis();
        System.out.println("fetch: "+(time-ftime));
        for (Message message : msgs) {
            System.out.println(message.getSubject());
            Address[] from = message.getFrom();
            for (Address address : from) {
                System.out.println(address);
            }
            Address[] recipients = message.getAllRecipients();
            for (Address address : recipients) {
                System.out.println(address);
            }

        }
        long newTime = System.currentTimeMillis();
        System.out.println("convert: "+(newTime-time));
    }catch (Exception e) {
        e.printStackTrace();
    }


}
Run Code Online (Sandbox Code Playgroud)

Gre*_*iwi 5

我相信 Gmail 将 IMAP 邮件读取限制为每秒一次左右。您也许可以通过多个 IMAP 连接来加快速度。