IMAP服务器(IMAP Servers)
优质
小牛编辑
133浏览
2023-12-01
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.user | String | IMAP的默认用户名。 |
mail.imap.host | String | 要连接的IMAP服务器。 |
mail.imap.port | int | 要连接的IMAP服务器端口,如果connect()方法未明确指定一个。 默认为143。 |
mail.imap.partialfetch | boolean | 控制是否应使用IMAP部分提取功能。 默认为true。 |
mail.imap.fetchsize | int | 部分提取大小(以字节为单位)。 默认为16K。 |
mail.imap.ignorebodystructuresize | boolean | IMAP BODYSTRUCTURE响应包括每个身体部位的确切大小。 通常,此大小用于确定每个身体部位要获取的数据量。 默认为false。 |
mail.imap.connectiontimeout | int | 套接字连接超时值,以毫秒为单位。 默认为无限超时。 |
mail.imap.timeout | int | 套接字I/O超时值,以毫秒为单位。 默认为无限超时。 |
mail.imap.statuscachetimeout | int | STATUS命令响应缓存的超时值(以毫秒为单位)。 默认值为1000(1秒)。 零禁用缓存。 |
mail.imap.appendbuffersize | int | 附加到IMAP文件夹时要在内存中缓冲的消息的最大大小。 |
mail.imap.connectionpoolsize | int | 连接池中的最大可用连接数。 默认值为1。 |
mail.imap.connectionpooltimeout | int | 连接池连接的超时值(以毫秒为单位)。 默认值为45000(45秒)。 |
mail.imap.separatestoreconnection | boolean | 用于指示是否对存储命令使用专用存储连接的标志。 默认值为false。 |
mail.imap.auth.login.disable | boolean | 如果为true,则禁止使用非标准AUTHENTICATE LOGIN命令,而是使用plain LOGIN命令。 默认值为false。 |
mail.imap.auth.plain.disable | boolean | 如果为true,则阻止使用AUTHENTICATE PLAIN命令。 默认值为false。 |
mail.imap.auth.ntlm.disable | boolean | 如果为true,则阻止使用AUTHENTICATE NTLM命令。 默认值为false。 |
mail.imap.proxyauth.user | String | 如果服务器支持PROXYAUTH扩展,则此属性指定要充当的用户的名称。 使用管理员凭据对服务器进行身份验证。 身份验证后,IMAP提供程序将发出带有此属性中指定的用户名的PROXYAUTH命令。 |
mail.imap.localaddress | String | 创建IMAP套接字时要绑定的本地地址(主机名)。 默认为Socket类选择的地址。 |
mail.imap.localport | int | 创建IMAP套接字时要绑定的本地端口号。 默认为Socket类选择的端口号。 |
mail.imap.sasl.enable | boolean | 如果设置为true,则尝试使用javax.security.sasl包来选择登录的身份验证机制。 默认为false。 |
mail.imap.sasl.mechanisms | String | 要尝试使用的空格或逗号分隔的SASL机制名称列表。 |
mail.imap.sasl.authorizationid | String | 要在SASL身份验证中使用的授权标识。 如果未设置,则使用身份验证ID(用户名)。 |
mail.imap.sasl.realm | String | 用于需要领域的SASL身份验证机制的领域,例如DIGEST-MD5。 |
mail.imap.auth.ntlm.domain | String | The NTLM authentication domain. |
mail.imap.auth.ntlm.flags | int | NTLM协议特定的标志。 |
mail.imap.socketFactory | 套接字工厂 | 如果设置为实现javax.net.SocketFactory接口的类,则此类将用于创建IMAP套接字。 |
mail.imap.socketFactory.class | String | 如果设置,则指定实现javax.net.SocketFactory接口的类的名称。 该类将用于创建IMAP套接字。 |
mail.imap.socketFactory.fallback | boolean | 如果设置为true,则无法使用指定的套接字工厂类创建套接字将导致使用java.net.Socket类创建套接字。 默认为true。 |
mail.imap.socketFactory.port | int | 指定使用指定套接字工厂时要连接的端口。 未设置时使用默认端口。 |
mail.imap.ssl.enable | boolean | 如果设置为true,则默认情况下使用SSL连接并使用SSL端口。 “imap”协议默认为false,“imaps”协议默认为true。 |
mail.imap.ssl.checkserveridentity | boolean | 如果设置为true,请检查RFC 2595指定的服务器标识。默认为false。 |
mail.imap.ssl.trust | String | 如果设置,并且尚未指定套接字工厂,则启用MailSSLSocketFactory。 如果设置为“*”,则所有主机都是可信的。 如果设置为以空格分隔的主机列表,则这些主机是受信任的。 否则,信任取决于服务器提供的证书。 |
mail.imap.ssl.socketFactory | SSL套接字工厂 | 如果设置为扩展javax.net.ssl.SSLSocketFactory类的类,则此类将用于创建IMAP SSL套接字。 |
mail.imap.ssl.socketFactory.class | String | 如果设置,则指定扩展javax.net.ssl.SSLSocketFactory类的类的名称。 此类将用于创建IMAP SSL套接字。 |
mail.imap.ssl.socketFactory.port | int | 指定使用指定套接字工厂时要连接的端口。 如果未设置,将使用默认端口。 |
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.port | string | 指定SOCKS5代理服务器的端口号。 如果代理服务器未使用标准端口号1080,则只需使用此选项。 |
mail.imap.minidletime | int | 此属性设置延迟(以毫秒为单位)。 如果未设置,则默认值为10毫秒。 |
mail.imap.enableimapevents | boolean | 启用要传递到Store的ConnectionListener的特殊IMAP特定事件。 如果为true,则在Store的idle方法期间收到的未经请求的响应将作为ConnectionEvents发送,其类型为IMAPStore.RESPONSE。 事件的消息将是原始IMAP响应字符串。 默认情况下,不会发送这些事件。 |
mail.imap.folder.class | String | 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一章。