在Java项目中,我试图检索带有某些特定gmail“标签”的gmail帐户的电子邮件,代码如下:
//List of flags
Flags flagsProcessed = new Flags("AiProcessed");
Flags flagsFailedToProcess = new Flags("AiNotProcessed");
Flags flagsAi = new Flags("Ai");
// list of flags terms
FlagTerm unseenFlagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
FlagTerm aiTerm = new FlagTerm(flagsAi, true);
FlagTerm aiNotProcessed = new FlagTerm(flagsProcessed, false);
SearchTerm toBeProcessedByAiAndNotAlreadyProcessed =new AndTerm( aiTerm, aiNotProcessed);
Message[] messagesUnseen = inbox.search(unseenFlagTerm);
logger.info("unread : " + messagesUnseen.length);
Message[] messagesToProcess = inbox.search(toBeProcessedByAiAndNotAlreadyProcessed);
logger.info("toProcess : " + messagesToProcess.length);
Message[] messages = ArrayUtils.addAll(messagesUnseen, messagesToProcess);
logger.info("There are messages unread or with ai flags to process : " + messages.length);
但它不起作用,即使使用 gmail Web 界面标记了正确标签的消息也不会被检索到,看起来 gmail 标签并不是按照 Javax.mail 概念真正的“标志”。我读到也许我应该将 gmails 标签作为文件夹进行管理,但是如何在多个文件夹上进行搜索?
我不敢相信没有人尝试过使用标签将 gmail 收件箱集成到 JAVA 中,有人有想法让我走上正轨吗?
我认为,在JavaMail api中,Gmail标签并没有直接映射到Flags。您必须将Folder.search(your_search_term) 方法与search_term 结合使用来检查特定gmail 标签是否存在。
请参阅文档: