我正在尝试编写一个简单的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);
我在这段代码中犯了什么错误?因为我收到所有邮件,而不仅仅是未读邮件。
引用 Sun 关于其捆绑的 POP3 提供程序的文档(我假设您正在使用) - 文档位于/docs/sundocs 中
POP3 不支持永久标志(请参阅 Folder.getPermanentFlags())。在 特别是,永远不会为 POP3 设置 Flags.Flag.RECENT 标志 消息。由应用程序确定 POP3 邮箱是"新的"。有几种策略需要完成 这,取决于应用程序和环境的需求:A 简单的方法是跟踪看到的最新消息 应用程序。另一种方法是跟踪 UID (见下文)已看到的所有消息。另一种方法是 将所有邮件下载到本地邮箱中,以便所有邮件 根据定义,POP3 邮箱是新的。所有方法都需要 与客户端关联的一些永久存储。
我认为这几乎回答了你的问题