JavaMail常见问题之POP3问题

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

问. 我可以从哪里找到 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)复制到存储中,并允许你将消息写到其他文件夹。参见 本项目,获取有关本地存储提供程序的进一步消息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航