Javax.mail 在 Gmail 中搜索特定标签

问题描述 投票:0回答:1

在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 中,有人有想法让我走上正轨吗?

java gmail jakarta-mail
1个回答
0
投票

我认为,在JavaMail api中,Gmail标签并没有直接映射到Flags。您必须将Folder.search(your_search_term) 方法与search_term 结合使用来检查特定gmail 标签是否存在。

请参阅文档:

© www.soinside.com 2019 - 2024. All rights reserved.