【问题标题】:getting the 'seen' flag doesn't seem to work获得'seen'标志似乎不起作用
【发布时间】:2011-09-19 07:58:27
【问题描述】:

我正在使用 java 的默认 pop3 实现,但无法让它读取标志的实际状态(我认为)。

这是(缩写的)代码:

Store store = null;
Folder folder = null;
try
{
    Session mailSession = Session.getInstance(new Properties(), null);
    store = mailSession.getStore("pop3");
    store.connect(host, addr, pwd);
    folder = store.getFolder("INBOX");
    folder.open(Folder.READ_WRITE);

    for (Message msg : folder.getMessages())
    {
        if (msg.isSet(Flag.SEEN))
            continue;

        LOG.debug("processing email titled '" + msg.getSubject()
                + "' from '" + msg.getFrom()[0] + "'");

        ... do some stuff

        msg.setFlag(Flag.SEEN, true);
    }
}
finally
{
        if (folder != null)
            folder.close(true);
        if (store != null)
            store.close();
}

问题在于,每次执行上述代码时,都会处理相同的消息(所有消息),因为对msg.isSet(Flag.SEEN) 的调用总是返回 false,即使我在上一次迭代中已将其设置为 true。

webmail 客户端甚至会反映正在设置的标志(标题从粗体变为普通字体)。

有谁知道我做错了什么?

谢谢,p.

【问题讨论】:

    标签: java email jakarta-mail pop3


    【解决方案1】:

    进一步阅读告诉我 pop3 不支持设置/获取这些标志,只支持删除消息。

    pop3 似乎支持设置标志(因为我可以看到标志已在 webmail 程序中成功设置)但随后无法读取标志状态。

    谢天谢地,我的邮件服务器支持 imap,它可以按预期完成所有操作。我只需要将我的代码从 mailSession.getStore("pop3") 更改为 mailSession.getStore("imap")

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多