【问题标题】:Cannot get Unread emails from hotmail account using javamail api无法使用 javamail api 从 hotmail 帐户获取未读电子邮件
【发布时间】:2012-06-29 16:43:03
【问题描述】:

我正在尝试编写一个简单的 java 程序,它使用 javamail api 从我的 hotmail 帐户返回所有未读电子邮件。这是我正在使用的代码:

        String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    Properties props = new Properties();
    props.setProperty("mail.pop3.ssl.enable", "true");
    props.setProperty("mail.pop3s.socketFactory.class", SSL_FACTORY); 
    props.setProperty("mail.pop3s.socketFactory.fallback", "false"); 
    props.setProperty("mail.pop3s.port", "995"); 
    props.setProperty("mail.pop3s.socketFactory.port", "995");
    Session session = Session.getInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        Store store = session.getStore("pop3");
        store.connect("pop3.live.com", username, password);
        System.out.println(store);

        Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);
        FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
        Message messages[] = inbox.search(ft);

我在这段代码中的错误是什么?因为我收到了所有邮件,而不仅仅是未读邮件。

【问题讨论】:

  • 你有没有找到类似收件箱文件夹的getUnread()方法。
  • 是的,有一个方法可以称为 inbox.getUnreadMessageCount();

标签: java jakarta-mail pop3 hotmail


【解决方案1】:

从 Sun 的文档中引用他们捆绑的 POP3 提供程序(我假设您正在使用)- 文档位于 /docs/sundocs

POP3 不支持永久标志(请参阅 Folder.getPermanentFlags())。在 特别是,永远不会为 POP3 设置 Flags.Flag.RECENT 标志 消息。由应用程序决定一个消息中的哪些消息 POP3 邮箱是“新的”。有几种策略可以完成 这取决于应用程序和环境的需要:A 简单的方法是跟踪看到的最新消息 应用程序。另一种方法是跟踪 UID (见下文)所有已看到的消息。另一种方法是 将所有邮件下载到本地邮箱中,以便 根据定义,POP3 邮箱是新的。所有方法都需要 一些与客户端关联的永久存储。

我认为这几乎可以回答您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2012-03-24
    • 2011-07-19
    相关资源
    最近更新 更多