问. 我可以从哪里找到 POP3 的支持?
答:在 JavaMail 1.2 及以上版本中包括了 POP3 提供程序。POP3 提供程序也可从多个第三方提供商获得。请浏览我们的 第三方产品清单,获取进一步信息。
问. 我想在 POP3 服务器上删除消息。我在这些消息上设置了 DELETED 标志。然后调用 expunge() 方法,但我得到了MethodNotSupportedException。当使用 Sun 的 POP3 提供程序时,我如何删除消息?
答:POP3 提供程序不支持 expunge() 方法。不过,可以关闭 expunge 标志设为 true 的文件夹。也就是调用 folder.close(true)。
问. 在从 Sun POP3 提供程序获得的消息中,我如何可以检索 POP3 UIDL?
答:对于 POP3 提供程序,这是可能的。参见 com.sun.mail.pop3 包文档,获取进一步信息。
问. 对于 POP3,我如何知道哪里消息是新的?
答:POP3 协议不提供任何永久标志的支持,因此 RECENT 标志是没有用的。com.sun.mail.pop3 包文档讨论了几个策略,它们可用于处理这一问题。
问. 当使用 POP3 时,为什么 hasNewMessages() 总是返回 false?
答:POP3 协议没有提供办法来决定文件夹是否有新消息。
问. 我创建了 MessageCountListener(如 monitor 程序中所展示的),但在我的 POP3 INBOX(收件箱)中,我从未得到通知。
答:当 INBOX 打开时,POP3 协议不允许客户端查看传送到 INBOX 的新消息。应用程序必须关闭 INBOX,然后重新打开它, 才可以查看新消息。对于 POP3,使用 MessageCountListener 接口,你从不会得到新邮件的通知。参见 com.sun.mail.pop3 包文档(在 JavaMail 下载包的 docs/sundocs 目录),获取进一步信息。
问. 当使用 POP3 时,为什么 getReceivedDate() 返回 null?
答:POP3 协议不提供有关何时接收消息的信息。通过查看一些消息标题,比如 Received 标题,可能可以猜到接收日期,但这非常不可靠。
问. 当使用 POP3 时,我得到了有关 SocketFetcher 类的抱怨。
答:很有可能在 CLASSPATH 中有多个版本的 pop3.jar 或 mail.jar。检查 CLASSPATH 的设置,如果你正在使用 JDK 1.2 或更新版本,检查 JDK 中的 "jre/lib/ext" 目录。确保你只有 JavaMail 1.2 mail.jar 可用并且没有 pop3.jar。只有对于较老版本的 JavaMail,pop3.jar 才是必要的。
问. 当使用 POP3 时,我得到了有关 contentStream 字段的抱怨。
答:错误通常像下面这样:
java.lang.NoSuchFieldError: contentStream at
com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:115)
像 上面 一样,使用混合版本的 POP3 提供程序和 mail.jar。在包括 POP3 提供程序的较新版本 mail.jar 之前,你可能在 CLASSPATH 中有了较老版本。
问. 除了 POP3 服务器上的 INBOX(收件箱)外,您如何访问或创建文件夹?
答:不能。POP3 服务器只支持每个用户一个邮箱。大多数使用 POP3 的邮件阅读者也维护着本地消息存储,他们可以将传入的消息(来自 POP3 INBOX)复制到存储中,并允许你将消息写到其他文件夹。参见 本项目,获取有关本地存储提供程序的进一步消息。