POP3服务器(POP3 Servers)

优质
小牛编辑
127浏览
2023-12-01

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

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

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

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

  • 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.userStringPOP3的默认用户名。
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.classStringcom.sun.mail.pop3.POP3Message的子类的类名。 子类可用于处理(例如)非标准Content-Type标头。 子类必须具有MyPOP3Message(Folder f,int msgno)形式的公共构造函数抛出MessagingException。
mail.pop3.localaddressString创建POP3套接字时要绑定的本地地址(主机名)。 默认为Socket类选择的地址。
mail.pop3.localportint创建POP3套接字时要绑定的本地端口号。 默认为Socket类选择的端口号。
mail.pop3.apop.enableboolean如果设置为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.portint指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。
mail.pop3.ssl.enableboolean如果设置为true,则默认情况下使用SSL连接并使用SSL端口。 “pop3”协议默认为false,“pop3s”协议默认为true。
mail.pop3.ssl.checkserveridentityboolean如果设置为true,请检查RFC 2595指定的服务器标识。默认为false。
mail.pop3.ssl.trustString如果设置,并且尚未指定套接字工厂,则启用MailSSLSocketFactory。 如果设置为“*”,则所有主机都是可信的。 如果设置为以空格分隔的主机列表,则这些主机是受信任的。 否则,信任取决于服务器提供的证书。
mail.pop3.ssl.socketFactorySSL套接字工厂如果设置为扩展javax.net.ssl.SSLSocketFactory类的类,则此类将用于创建POP3 SSL套接字。
mail.pop3.ssl.socketFactory.classString如果设置,则指定扩展javax.net.ssl.SSLSocketFactory类的类的名称。 此类将用于创建POP3 SSL套接字。
mail.pop3.ssl.socketFactory.portint指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。
mail.pop3.ssl.protocolsstring指定将为SSL连接启用的SSL协议。 属性值是javax.net.ssl.SSLSocket.setEnabledProtocols方法可接受的以空格分隔的标记列表。
mail.pop3.starttls.enableboolean如果为true,则允许使用STLS命令(如果服务器支持)在发出任何登录命令之前将连接切换到受TLS保护的连接。 默认为false。
mail.pop3.starttls.requiredboolean如果为true,则需要使用STLS命令。 如果服务器不支持STLS命令,或者命令失败,则connect方法将失败。 默认为false。
mail.pop3.socks.hoststring指定将用于连接到邮件服务器的SOCKS5代理服务器的主机名。
mail.pop3.socks.portstring指定SOCKS5代理服务器的端口号。
mail.pop3.disabletopboolean如果设置为true,则不会使用POP3 TOP命令来获取邮件头。 默认为false。
mail.pop3.forgettopheadersboolean如果设置为true,则可能忘记使用POP3 TOP命令检索的标头,并将其替换为作为POP3 RETR命令的一部分检索的标头。 默认为false。
mail.pop3.filecache.enableboolean如果设置为true,POP3提供程序将将消息数据缓存在临时文件中而不是内存中。 消息仅在访问消息内容时添加到缓存中。 消息头始终缓存在内存中(按需)。 文件夹关闭或JVM终止时,将删除文件缓存。 默认为false。
mail.pop3.filecache.dirString如果启用了文件高速缓存,则可以使用此属性覆盖JDK用于临时文件的缺省目录。
mail.pop3.cachewritetoboolean控制POP3消息对象上writeTo方法的行为。 如果设置为true,并且消息内容尚未缓存,并且ignoreList为null,则在写入之前缓存该消息。 否则,消息将直接流式传输到输出流而不进行高速缓存。 默认为false。
mail.pop3.keepmessagecontentboolean如果此属性设置为true,则将保留对缓存内容的硬引用,从而阻止在文件夹关闭或缓存内容显式无效(使用invalidate方法)之前重用内存。 默认为false。

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

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