我编写了代码,每小时检查一次新电子邮件,其中包含来自特定发件人的附件。预期每小时都会每小时从特定用户发送一封带有附件的电子邮件(因此请不要使用空闲功能)。
检测到新电子邮件时,该用户的所有新电子邮件都将保存到一个阵列中,并检查最新电子邮件中是否包含csv附件,并对其进行操作并将其保存到磁盘中。
检查新电子邮件的代码看起来很冗长,我想知道是否可以进行任何改进。
特别是(1)如果用户登录并阅读并发送电子邮件,则在两次呼叫之间比较未读消息计数将失败。
(2)新电子邮件数组仅查看最新的电子邮件(length()-1)。
Config()
由于我知道电子邮件总是在+/-分钟左右的时间到达-安排邮件检查会更简单,更可靠吗?
答案 0 :(得分:1)
正如@arnt所说,请跟踪最后处理的消息的UID,然后搜索符合您条件的更新消息:
FromTerm senderFromTerm = new FromTerm(new InternetAddress("specifieduser@gmail.com"));
// first, find all the new messages since we last looked
Message messages[] = ((UIDFolder)inbox).getMessagesByUID(lastProcessedUID, UIDFolder.LASTUID);
// now search within the new messages for those from our user
messages = inbox.search(senderFromTerm, messages);