1.收取邮件时需要进行相关协议的配置,获取端口,主机,协议;
Properties props = new Properties(); //添加协议参数未pop3s,pop3在进行链接目标地址的收件箱时是接受不到的; props.setProperty("mail.store.protocol", "pop3s"); props.setProperty("mail.pop3s.host", receiveHost); props.setProperty("mail.pop3s.port", receivePort); props.setProperty("mail.pop3s.auth", "true"); props.setProperty("mail.pop3s.socketFactory.class", "javax.net.ssl.SSLSocketFactory" ); props.setProperty("mail.pop3s.ssl.trust", "*"); Session session = Session.getDefaultInstance(props); store = session.getStore("pop3s"); store.connect(username, password); folder = store.getFolder("INBOX");
2.收取邮件时进行筛选条件,如果进行时间的筛选如下:
folder.open(Folder.READ_WRITE); //邮箱数据库截至时间 Calendar calendarGe = Calendar.getInstance(); SearchTerm termGe = null; if(ObjectUtil.isNotNull(fromTime)){ calendarGe.setTime(DateConvertUtils.localDateTime2Date(fromTime)); termGe = new SentDateTerm(ComparisonTerm.GT, calendarGe.getTime()); } //到当前时间 Calendar calendarLe = Calendar.getInstance(); calendarLe.setTime(new Date()); calendarLe.add(Calendar.DATE,1); //SentDateTerm不是ReceivedDateTerm //ComparisonTerm类常用于日期和数字比较中,它使用六个常量EQ(=)、GE(>=)、GT(>)、LE(<=)、LT(<)、NE(!=)来表示六种不同的比较操作。 SearchTerm termLe = new SentDateTerm(ComparisonTerm.LE, calendarLe.getTime()); AndTerm termGeAndLe = new AndTerm(termGe, termLe); folder.search(termGeAndLe)//search方法好像是不能精确到秒的 如果没有查到数据库截至时间则接收小于等与当前时间的邮件