JavaMail - IMAP 服务器

  • 简述

    IMAP 是缩写 Internet Message Access Protocol. 它是一种应用层 Internet 协议,允许电子邮件客户端访问远程邮件服务器上的电子邮件。IMAP 服务器通常侦听众所周知的端口 143。IMAP over SSL (IMAPS) 分配给端口号 993。
    IMAP 支持在线和离线操作模式。使用 IMAP 的电子邮件客户端通常会将消息留在服务器上,直到用户明确删除它们。
    包裹 com.sun.mail.imap是 JavaMail API 的 IMAP 协议提供程序,提供对 IMAP 消息存储的访问。下表列出了此提供程序的接口和类:
    类/接口 描述
    IMAPFolder.ProtocolCommand 这是用户定义的 IMAP 协议命令的简单界面
    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 Session 对象中设置。属性始终设置为字符串;这Type 列描述如何解释字符串。
    Name 类型 描述
    mail.imap.user String IMAP 的默认用户名。
    mail.imap.host String 要连接的 IMAP 服务器。
    mail.imap.port int 要连接的 IMAP 服务器端口,如果 connect() 方法没有明确指定一个。默认为 143。
    mail.imap.partialfetch boolean 控制是否应使用 IMAP 部分提取功能。默认为真。
    mail.imap.fetchsize int 部分提取大小(以字节为单位)。默认为 16K。
    mail.imap.ignorebodystructuresize boolean IMAP BODYSTRUCTURE 响应包括每个身体部位的确切尺寸。通常,此大小用于确定要为每个身体部位获取多少数据。默认为假。
    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 用于指示是否对存储命令使用专用存储连接的标志。默认为假。
    mail.imap.auth.login.disable boolean 如果为 true,则阻止使用非标准的 AUTHENTICATE LOGIN 命令,而是使用普通的 LOGIN 命令。默认为假。
    mail.imap.auth.plain.disable boolean 如果为 true,则阻止使用 AUTHENTICATE PLAIN 命令。默认为假。
    mail.imap.auth.ntlm.disable boolean 如果为 true,则阻止使用 AUTHENTICATE NTLM 命令。默认为假。
    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 包来选择登录的身份验证机制。默认为假。
    mail.imap.sasl.mechanisms String 要尝试使用的 SASL 机制名称的空格或逗号分隔列表。
    mail.imap.sasl.authorizationid String 在 SASL 身份验证中使用的授权 ID。如果未设置,则使用身份验证 ID(用户名)。
    mail.imap.sasl.realm String 与需要领域的 SASL 身份验证机制一起使用的领域,例如 DIGEST-MD5。
    mail.imap.auth.ntlm.domain String NTLM 身份验证域。
    mail.imap.auth.ntlm.flags int NTLM 协议特定标志。
    mail.imap.socketFactory Socket Factory 如果设置为实现 javax.net.SocketFactory 接口的类,该类将用于创建 IMAP 套接字。
    mail.imap.socketFactory.class String 如果设置,则指定实现 javax.net.SocketFactory 接口的类的名称。此类将用于创建 IMAP 套接字。
    mail.imap.socketFactory.fallback boolean 如果设置为 true,则无法使用指定的套接字工厂类创建套接字将导致使用 java.net.Socket 类创建套接字。默认为真。
    mail.imap.socketFactory.port int 指定使用指定套接字工厂时要连接的端口。未设置时使用默认端口。
    mail.imap.ssl.enable boolean 如果设置为 true,则默认使用 SSL 连接并使用 SSL 端口。“imap”协议默认为false,“imap”协议默认为true。
    mail.imap.ssl.checkserveridentity boolean 如果设置为 true,请检查 RFC 2595 指定的服务器标识。默认为 false。
    mail.imap.ssl.trust String 如果设置,并且未指定套接字工厂,则启用 MailSSLSocketFactory。
    mail.imap.ssl.socketFactory SSL Socket Factory 如果设置为扩展 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 保护的连接。默认为假。
    mail.imap.starttls.required boolean 如果为 true,则需要使用 STARTTLS 命令。如果服务器不支持 STARTTLS 命令,或者命令失败,则连接方法将失败。默认为假。
    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 方法期间收到的未经请求的响应将作为具有 IMAPStore.RESPONSE 类型的 ConnectionEvents 发送。事件的消息将是原始 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 服务器的示例。