目录

JavaMail - POP3服务器( POP3 Servers)

邮局协议(POP)是本地电子邮件客户端用于通过TCP/IP连接从远程服务器检索电子邮件的应用程序层Internet标准协议。 POP支持访问远程邮箱的简单下载和删除要求。 POP3服务器侦听已知端口110。

软件包com.sun.mail.pop3是JavaMail API的POP3协议提供程序,提供对POP3消息存储的访问。 下表列出了此包中的类:

名称 描述
POP3Folder POP3文件夹(只能是“INBOX”)。
POP3Message POP3消息。
POP3SSLStore 使用SSL的POP3邮件存储。
POP3Store POP3邮件存储。

此提供商上方需要注意的一些要点:

  • POP3提供程序仅支持名为INBOX的单个文件夹。 由于POP3协议的限制,不允许使用许多JavaMail API功能,如事件通知,文件夹管理,标记管理等。

  • 可以使用协议名称pop3pop3://user:password@host:port/INBOX"形式的URL通过JavaMail API访问POP3提供程序。

  • POP3不支持永久标志。 例如,永远不会为POP3消息设置Flags.Flag.RECENT标志。 应用程序可以确定POP3邮箱中的哪些邮件是new邮件。

  • POP3不支持Folder.expunge()方法。 要删除和删除消息,请在消息上设置Flags.Flag.DELETED标志,然后使用Folder.close(true)方法关闭该文件夹。

  • POP3不提供received date ,因此getReceivedDate方法将返回null。

  • 当访问POP3消息的标头时,POP3提供程序使用TOP命令来获取所有标头,然后缓存这些标头。

  • 当访问POP3消息的内容时,POP3提供程序使用RETR命令来获取整个消息。

  • POP3Message.invalidate方法可用于在不关闭文件夹的情况下使缓存的数据无效。

POP3协议提供程序支持以下属性,这些属性可以在JavaMail会话对象中设置。 属性始终设置为字符串; Type列描述了字符串的解释方式。

名称 类型 描述
mail.pop3.userString POP3的默认用户名。
mail.pop3.hostString 要连接的POP3服务器。
mail.pop3.portint 要连接的POP3服务器端口,如果connect()方法没有显式指定一个。 默认为110。
mail.pop3.connectiontimeoutint 套接字连接超时值,以毫秒为单位。 默认为无限超时。
mail.pop3.timeoutint 套接字I/O超时值,以毫秒为单位。 默认为无限超时。
mail.pop3.rsetbeforequitboolean 在发送QUIT命令之前,在关闭文件夹时发送POP3 RSET命令。 默认值为false。
mail.pop3.message.class String com.sun.mail.pop3.POP3Message的子类的类名。 子类可用于处理(例如)非标准Content-Type标头。 子类必须具有MyPOP3Message(Folder f,int msgno)形式的公共构造函数抛出MessagingException。
mail.pop3.localaddressString 创建POP3套接字时要绑定的本地地址(主机名)。 默认为Socket类选择的地址。
mail.pop3.localport int 创建POP3套接字时要绑定的本地端口号。 默认为Socket类选择的端口号。
mail.pop3.apop.enable boolean 如果设置为true,如果POP3服务器支持APOP,则使用APOP而不是USER/PASS登录POP3服务器。 APOP发送密码摘要而不是明文密码。 默认为false。
mail.pop3.socketFactory 套接字工厂 如果设置为实现javax.net.SocketFactory接口的类,则此类将用于创建POP3套接字。
mail.pop3.socketFactory.classString 如果设置,则指定实现javax.net.SocketFactory接口的类的名称。 该类将用于创建POP3套接字。
mail.pop3.socketFactory.fallbackboolean 如果设置为true,则无法使用指定的套接字工厂类创建套接字将导致使用java.net.Socket类创建套接字。 默认为true。
mail.pop3.socketFactory.port int 指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。
mail.pop3.ssl.enableboolean 如果设置为true,则默认情况下使用SSL连接并使用SSL端口。 “pop3”协议默认为false,“pop3s”协议默认为true。
mail.pop3.ssl.checkserveridentity boolean 如果设置为true,请检查RFC 2595指定的服务器标识。默认为false。
mail.pop3.ssl.trust String 如果设置,并且尚未指定套接字工厂,则启用MailSSLSocketFactory。 如果设置为“*”,则所有主机都是可信的。 如果设置为以空格分隔的主机列表,则这些主机是受信任的。 否则,信任取决于服务器提供的证书。
mail.pop3.ssl.socketFactory SSL套接字工厂 如果设置为扩展javax.net.ssl.SSLSocketFactory类的类,则此类将用于创建POP3 SSL套接字。
mail.pop3.ssl.socketFactory.class String 如果设置,则指定扩展javax.net.ssl.SSLSocketFactory类的类的名称。 此类将用于创建POP3 SSL套接字。
mail.pop3.ssl.socketFactory.port int 指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。
mail.pop3.ssl.protocolsstring 指定将为SSL连接启用的SSL协议。 属性值是javax.net.ssl.SSLSocket.setEnabledProtocols方法可接受的以空格分隔的标记列表。
mail.pop3.starttls.enable boolean 如果为true,则允许使用STLS命令(如果服务器支持)在发出任何登录命令之前将连接切换到受TLS保护的连接。 默认为false。
mail.pop3.starttls.required boolean 如果为true,则需要使用STLS命令。 如果服务器不支持STLS命令,或者命令失败,则connect方法将失败。 默认为false。
mail.pop3.socks.hoststring 指定将用于连接到邮件服务器的SOCKS5代理服务器的主机名。
mail.pop3.socks.port string 指定SOCKS5代理服务器的端口号。
mail.pop3.disabletop boolean 如果设置为true,则不会使用POP3 TOP命令来获取邮件头。 默认为false。
mail.pop3.forgettopheadersboolean 如果设置为true,则可能忘记使用POP3 TOP命令检索的标头,并将其替换为作为POP3 RETR命令的一部分检索的标头。 默认为false。
mail.pop3.filecache.enableboolean 如果设置为true,POP3提供程序将将消息数据缓存在临时文件中而不是内存中。 消息仅在访问消息内容时添加到缓存中。 消息头始终缓存在内存中(按需)。 文件夹关闭或JVM终止时,将删除文件缓存。 默认为false。
mail.pop3.filecache.dir String 如果启用了文件高速缓存,则可以使用此属性覆盖JDK用于临时文件的缺省目录。
mail.pop3.cachewriteto boolean 控制POP3消息对象上writeTo方法的行为。 如果设置为true,并且消息内容尚未缓存,并且ignoreList为null,则在写入之前缓存该消息。 否则,消息将直接流式传输到输出流而不进行高速缓存。 默认为false。
mail.pop3.keepmessagecontentboolean 如果此属性设置为true,则将保留对缓存内容的硬引用,从而阻止在文件夹关闭或缓存内容显式无效(使用invalidate方法)之前重用内存。 默认为false。

通常,应用程序不应直接使用此包中的类。 相反,他们应该使用javax.mail包(和子包)定义的API。 应用程序永远POP3Folder直接构造POP3StorePOP3Folder实例。 相反,他们应该使用Session方法getStore来获取适当的Store对象,并从中获取Folder对象。

有关使用POP3服务器的示例,请参阅检查电子邮件一章。

↑回到顶部↑
WIKI教程 @2018