通过javax.mail获取邮件
之前获取是获取邮箱内的全部邮件,为了能获取准确的邮件是否已读,将协议从pop3协议改成imap
今天想要根据时间筛选获取邮件,一直报错 A5 BAD invalid command or parameters
后将协议改回pop3后可以正常获取,
Date startDate = DateUtils.stringToDate("2020-06-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); Date endDate = DateUtils.stringToDate("2020-07-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); SearchTerm searchTermStart = new SentDateTerm(ComparisonTerm.GE,startDate); SearchTerm searchTermEnd = new SentDateTerm(ComparisonTerm.LE, endDate); SearchTerm compare = new AndTerm(searchTermStart,searchTermEnd); Message[] messages = folder.search(compare);
具体原因未知,目前先按照需求来取用
仅作记录
1、逻辑组合关系的子类有:AndTerm 类、OrTerm 类、NotTerm 类、ComparisonTerm 类,它们都是 SearchTerm 抽象类的具体子类;
2、具体搜索条件的类有:DateTerm 类、BodyTerm 类、HeaderTerm 类,这几个都是抽象类,具体应用时应该由其对应的子类来实现。
2020年9月17日 14:17:20 记录更新
imap协议下使用筛选功能调整:
folder.search(参数)方法中,参数使用AndTerm会报错,所以直接将参数改成startDate,获取startDate之后的所有邮件
注:根据startDate筛选,只能精确到日,时分秒无法过滤