Class POP3SClient

  • Direct Known Subclasses:
    ExtendedPOP3Client

    public class POP3SClient
    extends POP3Client
    POP3 over SSL processing. Copied from FTPSClient.java and modified to suit POP3. If implicit mode is selected (NOT the default), SSL/TLS negotiation starts right after the connection has been established. In explicit mode (the default), SSL/TLS negotiation starts when the user calls execTLS() and the server accepts the command. Implicit usage: POP3SClient c = new POP3SClient(true); c.connect("127.0.0.1", 995); Explicit usage: POP3SClient c = new POP3SClient(); c.connect("127.0.0.1", 110); if (c.execTLS()) { /rest of the commands here/ } Warning: the hostname is not verified against the certificate by default, use setHostnameVerifier(HostnameVerifier) or setEndpointCheckingEnabled(boolean) (on Java 1.7+) to enable verification.
    Since:
    3.0
    • Constructor Detail

      • POP3SClient

        public POP3SClient()
        Constructor for POP3SClient, using DEFAULT_PROTOCOL i.e. TLS Sets security mode to explicit.
      • POP3SClient

        public POP3SClient​(boolean implicit)
        Constructor for POP3SClient, using DEFAULT_PROTOCOL i.e. TLS
        Parameters:
        implicit - The security mode, true for implicit, false for explicit
      • POP3SClient

        public POP3SClient​(java.lang.String proto)
        Constructor for POP3SClient. Sets security mode to explicit.
        Parameters:
        proto - the protocol.
      • POP3SClient

        public POP3SClient​(java.lang.String proto,
                           boolean implicit)
        Constructor for POP3SClient.
        Parameters:
        proto - the protocol.
        implicit - The security mode, true for implicit, false for explicit
      • POP3SClient

        public POP3SClient​(java.lang.String proto,
                           boolean implicit,
                           javax.net.ssl.SSLContext ctx)
        Constructor for POP3SClient. Sets the default port to DEFAULT_POP3S_PORT - 995 - if using implicit mode
        Parameters:
        proto - the protocol.
        implicit - The security mode, true for implicit, false for explicit
        ctx - the context to be used
      • POP3SClient

        public POP3SClient​(boolean implicit,
                           javax.net.ssl.SSLContext ctx)
        Constructor for POP3SClient, using DEFAULT_PROTOCOL i.e. TLS
        Parameters:
        implicit - The security mode, true for implicit, false for explicit
        ctx - A pre-configured SSL Context.
      • POP3SClient

        public POP3SClient​(javax.net.ssl.SSLContext context)
        Constructor for POP3SClient, using DEFAULT_PROTOCOL - TLS - and isImplicit = false
        Parameters:
        context - A pre-configured SSL Context.
        See Also:
        POP3SClient(boolean, SSLContext)
    • Method Detail

      • _connectAction_

        protected void _connectAction_()
                                throws java.io.IOException
        Because there are so many connect() methods, the _connectAction_() method is provided as a means of performing some action immediately after establishing a connection, rather than reimplementing all of the connect() methods.
        Overrides:
        _connectAction_ in class POP3
        Throws:
        java.io.IOException - If it is thrown by _connectAction_().
        See Also:
        SocketClient._connectAction_()
      • setKeyManager

        public void setKeyManager​(javax.net.ssl.KeyManager newKeyManager)
        Set a KeyManager to use.
        Parameters:
        newKeyManager - The KeyManager implementation to set.
        See Also:
        KeyManagerUtils
      • setEnabledCipherSuites

        public void setEnabledCipherSuites​(java.lang.String[] cipherSuites)
        Controls which particular cipher suites are enabled for use on this connection. Called before server negotiation.
        Parameters:
        cipherSuites - The cipher suites.
      • getEnabledCipherSuites

        public java.lang.String[] getEnabledCipherSuites()
        Returns the names of the cipher suites which could be enabled for use on this connection. When the underlying Socket is not an SSLSocket instance, returns null.
        Returns:
        An array of cipher suite names, or null.
      • setEnabledProtocols

        public void setEnabledProtocols​(java.lang.String[] protocolVersions)
        Controls which particular protocol versions are enabled for use on this connection. I perform setting before a server negotiation.
        Parameters:
        protocolVersions - The protocol versions.
      • getEnabledProtocols

        public java.lang.String[] getEnabledProtocols()
        Returns the names of the protocol versions which are currently enabled for use on this connection. When the underlying Socket is not an SSLSocket instance, returns null.
        Returns:
        An array of protocols, or null.
      • execTLS

        public boolean execTLS()
                        throws javax.net.ssl.SSLException,
                               java.io.IOException
        The TLS command execution.
        Returns:
        TRUE if the command and negotiation succeeded.
        Throws:
        javax.net.ssl.SSLException - If the server reply code is not positive.
        java.io.IOException - If an I/O error occurs while sending the command or performing the negotiation.
      • getTrustManager

        public javax.net.ssl.TrustManager getTrustManager()
        Get the currently configured TrustManager.
        Returns:
        A TrustManager instance.
      • setTrustManager

        public void setTrustManager​(javax.net.ssl.TrustManager newTrustManager)
        Override the default TrustManager to use.
        Parameters:
        newTrustManager - The TrustManager implementation to set.
        See Also:
        TrustManagerUtils
      • getHostnameVerifier

        public javax.net.ssl.HostnameVerifier getHostnameVerifier()
        Get the currently configured HostnameVerifier.
        Returns:
        A HostnameVerifier instance.
        Since:
        3.4
      • setHostnameVerifier

        public void setHostnameVerifier​(javax.net.ssl.HostnameVerifier newHostnameVerifier)
        Override the default HostnameVerifier to use.
        Parameters:
        newHostnameVerifier - The HostnameVerifier implementation to set or null to disable.
        Since:
        3.4
      • isEndpointCheckingEnabled

        public boolean isEndpointCheckingEnabled()
        Return whether or not endpoint identification using the HTTPS algorithm on Java 1.7+ is enabled. The default behaviour is for this to be disabled.
        Returns:
        True if enabled, false if not.
        Since:
        3.4
      • setEndpointCheckingEnabled

        public void setEndpointCheckingEnabled​(boolean enable)
        Automatic endpoint identification checking using the HTTPS algorithm is supported on Java 1.7+. The default behaviour is for this to be disabled.
        Parameters:
        enable - Enable automatic endpoint identification checking using the HTTPS algorithm on Java 1.7+.
        Since:
        3.4