1

我用

receiveEmailAndMarkSeen(EmailFilter.filter().flag(Flags.Flag.SEEN,true));

过滤我没有阅读的消息,但该函数返回空数组。如果我设置false它会返回所有消息。

试了很多次,不知道怎么回事

有人可以帮助我吗?

4

1 回答 1

0

这可能取决于目标服务器。您使用的是 IMAP 还是 POP 服务器?IMAP 通常更适合您的用例。

这是一个对我有用的例子:

    ImapServer imapServer = MailServer.create()
        .host("imap.gmail.com")
        .ssl(true)
        .auth("user", "password")
        .buildImapMailServer();

    ReceiveMailSession session = imapServer.createSession();
    session.open();

    ReceivedEmail[] mails =
            session.receiveEmailAndMarkSeen(
            EmailFilter.filter().flag(Flags.Flag.SEEN, false));

    Arrays.stream(mails).map(CommonEmail::subject).forEach(System.out::println);

    session.close();

我的邮箱:

在此处输入图像描述

程序输出:

在此处输入图像描述

ps 尝试下载所有电子邮件并检查Flag收到的电子邮件。另外,使用 IMAP。

于 2018-06-26T15:54:22.420 回答