目录

JavaMail - IMAP服务器( IMAP Servers)

IMAP是Internet Message Access Protocol缩写。 它是一种应用层Internet协议,允许电子邮件客户端访问远程邮件服务器上的电子邮件。 IMAP服务器通常侦听众所周知的端口143.基于SSL的IMAP(IMAPS)被分配给端口号993。

IMAP支持在线和离线操作模式。 使用IMAP的电子邮件客户端通常会在服务器上保留消息,直到用户明确删除它们为止。

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

类/接口 描述
IMAPFolder.ProtocolCommand 这是用户定义的IMAP协议命令的简单interface
ACL 这是一堂课。 用于特定认证标识符(用户或组)的访问控制列表条目。
IMAPFolder 此类实现IMAP文件夹。
IMAPFolder.FetchProfileItem 这是一个用于获取标题的类。
IMAPMessage 该类实现了一个ReadableMime对象。
IMAPMessage.FetchProfileCondition 此类实现对文件夹中的每条消息执行的测试。
IMAPSSLStore 此类提供对通过SSL的IMAP消息存储的访问。
IMAPStore 此类提供对IMAP消息存储的访问。
Rights 此类表示身份验证标识符(例如,用户或组)的权限集。
Rights.Right 这个内在阶级代表个人权利。
SortTerm RFC 5256定义的特定排序标准。

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

  • 此提供程序支持IMAP4和IMAP4rev1协议。

  • 连接的IMAPStore维护一个IMAP协议对象池,用于与IMAP服务器通信。 当打开文件夹并需要新的IMAP协议对象时,IMAPStore将从连接池提供它们,或者如果没有可用的话创建它们。 关闭文件夹时,如果池,其IMAP协议对象将返回到连接池。

  • 连接的IMAPStore对象可能维护也可能不维护单独的IMAP协议对象,该对象为存储提供与IMAP服务器的专用连接。

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

名称 类型 描述
mail.imap.userString IMAP的默认用户名。
mail.imap.hostString 要连接的IMAP服务器。
mail.imap.portint 要连接的IMAP服务器端口,如果connect()方法未明确指定一个。 默认为143。
mail.imap.partialfetch boolean 控制是否应使用IMAP部分提取功能。 默认为true。
mail.imap.fetchsizeint 部分提取大小(以字节为单位)。 默认为16K。
mail.imap.ignorebodystructuresize boolean IMAP BODYSTRUCTURE响应包括每个身体部位的确切大小。 通常,此大小用于确定每个身体部位要获取的数据量。 默认为false。
mail.imap.connectiontimeoutint 套接字连接超时值,以毫秒为单位。 默认为无限超时。
mail.imap.timeout int 套接字I/O超时值,以毫秒为单位。 默认为无限超时。
mail.imap.statuscachetimeoutint STATUS命令响应缓存的超时值(以毫秒为单位)。 默认值为1000(1秒)。 零禁用缓存。
mail.imap.appendbuffersizeint 附加到IMAP文件夹时要在内存中缓冲的消息的最大大小。
mail.imap.connectionpoolsize int 连接池中的最大可用连接数。 默认值为1。
mail.imap.connectionpooltimeoutint 连接池连接的超时值(以毫秒为单位)。 默认值为45000(45秒)。
mail.imap.separatestoreconnection boolean 用于指示是否对存储命令使用专用存储连接的标志。 默认值为false。
mail.imap.auth.login.disableboolean 如果为true,则禁止使用非标准AUTHENTICATE LOGIN命令,而是使用plain LOGIN命令。 默认值为false。
mail.imap.auth.plain.disable boolean 如果为true,则阻止使用AUTHENTICATE PLAIN命令。 默认值为false。
mail.imap.auth.ntlm.disableboolean 如果为true,则阻止使用AUTHENTICATE NTLM命令。 默认值为false。
mail.imap.proxyauth.userString 如果服务器支持PROXYAUTH扩展,则此属性指定要充当的用户的名称。 使用管理员凭据对服务器进行身份验证。 身份验证后,IMAP提供程序将发出带有此属性中指定的用户名的PROXYAUTH命令。
mail.imap.localaddressString 创建IMAP套接字时要绑定的本地地址(主机名)。 默认为Socket类选择的地址。
mail.imap.localport int 创建IMAP套接字时要绑定的本地端口号。 默认为Socket类选择的端口号。
mail.imap.sasl.enableboolean 如果设置为true,则尝试使用javax.security.sasl包来选择登录的身份验证机制。 默认为false。
mail.imap.sasl.mechanismsString 要尝试使用的空格或逗号分隔的SASL机制名称列表。
mail.imap.sasl.authorizationidString 要在SASL身份验证中使用的授权标识。 如果未设置,则使用身份验证ID(用户名)。
mail.imap.sasl.realmString 用于需要领域的SASL身份验证机制的领域,例如DIGEST-MD5。
mail.imap.auth.ntlm.domainStringThe NTLM authentication domain.
mail.imap.auth.ntlm.flags int NTLM协议特定的标志。
mail.imap.socketFactory 套接字工厂 如果设置为实现javax.net.SocketFactory接口的类,则此类将用于创建IMAP套接字。
mail.imap.socketFactory.classString 如果设置,则指定实现javax.net.SocketFactory接口的类的名称。 该类将用于创建IMAP套接字。
mail.imap.socketFactory.fallbackboolean 如果设置为true,则无法使用指定的套接字工厂类创建套接字将导致使用java.net.Socket类创建套接字。 默认为true。
mail.imap.socketFactory.portint 指定使用指定套接字工厂时要连接的端口。 未设置时使用默认端口。
mail.imap.ssl.enableboolean 如果设置为true,则默认情况下使用SSL连接并使用SSL端口。 “imap”协议默认为false,“imaps”协议默认为true。
mail.imap.ssl.checkserveridentityboolean 如果设置为true,请检查RFC 2595指定的服务器标识。默认为false。
mail.imap.ssl.trustString 如果设置,并且尚未指定套接字工厂,则启用MailSSLSocketFactory。 如果设置为“*”,则所有主机都是可信的。 如果设置为以空格分隔的主机列表,则这些主机是受信任的。 否则,信任取决于服务器提供的证书。
mail.imap.ssl.socketFactory SSL套接字工厂 如果设置为扩展javax.net.ssl.SSLSocketFactory类的类,则此类将用于创建IMAP SSL套接字。
mail.imap.ssl.socketFactory.classString 如果设置,则指定扩展javax.net.ssl.SSLSocketFactory类的类的名称。 此类将用于创建IMAP SSL套接字。
mail.imap.ssl.socketFactory.portint 指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。
mail.imap.ssl.protocols string 指定将为SSL连接启用的SSL协议。 属性值是javax.net.ssl.SSLSocket.setEnabledProtocols方法可接受的以空格分隔的标记列表。
mail.imap.starttls.enable boolean 如果为true,则允许使用STARTTLS命令(如果服务器支持)在发出任何登录命令之前将连接切换到受TLS保护的连接。 默认值为false。
mail.imap.starttls.required boolean 如果为true,则需要使用STARTTLS命令。 如果服务器不支持STARTTLS命令,或者命令失败,则connect方法将失败。 默认为false。
mail.imap.socks.host string 指定将用于连接到邮件服务器的SOCKS5代理服务器的主机名。
mail.imap.socks.portstring 指定SOCKS5代理服务器的端口号。 如果代理服务器未使用标准端口号1080,则只需使用此选项。
mail.imap.minidletimeint 此属性设置延迟(以毫秒为单位)。 如果未设置,则默认值为10毫秒。
mail.imap.enableimapevents boolean 启用要传递到Store的ConnectionListener的特殊IMAP特定事件。 如果为true,则在Store的idle方法期间收到的未经请求的响应将作为ConnectionEvents发送,其类型为IMAPStore.RESPONSE。 事件的消息将是原始IMAP响应字符串。 默认情况下,不会发送这些事件。
mail.imap.folder.classString com.sun.mail.imap.IMAPFolder的子类的类名。 子类可用于为其他IMAP命令提供支持。 子类必须具有public MyIMAPFolder(String fullName,char separator,IMAPStore store,Boolean isNamespace)和public MyIMAPFolder(ListInfo li,IMAPStore store)形式的公共构造函数

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

有关使用IMAP服务器的示例,请Quota Management一章。

↑回到顶部↑
WIKI教程 @2018