小编典典
经过大量工作和JavaMail员工的帮助,这种“缓慢”的来源来自API中的FETCH行为。确实,正如pjaol所说,每次需要消息的信息(标头或消息内容)时,我们都会返回服务器。
如果FetchProfile允许我们批量获取许多消息的标头信息或标志,则无法直接获取多个消息的内容。
幸运的是,我们可以编写自己的IMAP命令来避免这种“局限性”(这样做是为了避免出现内存不足错误:在一个命令中提取内存中的每个邮件可能会很繁重)。
这是我的代码:
import com.sun.mail.iap.Argument;
import com.sun.mail.iap.ProtocolException;
import com.sun.mail.iap.Response;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.protocol.BODY;
import com.sun.mail.imap.protocol.FetchResponse;
import com.sun.mail.imap.protocol.IMAPProtocol;
import com.sun.mail.imap.protocol.UID;
public class CustomProtocolCommand implements IMAPFolder.ProtocolCommand {
/** Index on server of first mail to fetch **/
int start;
/** Index on server of last mail to fetch **/
int end;
p