Java Mail-检查来自特定发件人的带有附件的新邮件

时间:2018-07-15 07:22:49

标签: java javamail imap

我编写了代码,每小时检查一次新电子邮件,其中包含来自特定发件人的附件。预期每小时都会每小时从特定用户发送一封带有附件的电子邮件(因此请不要使用空闲功能)。

检测到新电子邮件时,该用户的所有新电子邮件都将保存到一个阵列中,并检查最新电子邮件中是否包含csv附件,并对其进行操作并将其保存到磁盘中。

检查新电子邮件的代码看起来很冗长,我想知道是否可以进行任何改进。

特别是(1)如果用户登录并阅读并发送电子邮件,则在两次呼叫之间比较未读消息计数将失败。

(2)新电子邮件数组仅查看最新的电子邮件(length()-1)。

Config()

由于我知道电子邮件总是在+/-分钟左右的时间到达-安排邮件检查会更简单,更可靠吗?

1 个答案:

答案 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);