public ConnectResult Connect()
        {
            Pop3Connection instance;

            var credentials = CredentialsProvider.GetCredentials();

            // Get the connection for the current server and user
            bool isFree = ConnectionPool <Pop3Connection> .AcquireLock(out instance, Hostname, Port, IsSecured, credentials.Claim, credentials.Evidence);

            if (isFree == false)
            {
                return(ConnectResult.Delay);
            }

            connection = instance;

            try
            {
                connection.Open();
                connection.Authenticate();

                return(ConnectResult.Success);
            }
            catch (ChannelAuthenticationException ex)
            {
                AuthMessage = ex.Message;

                return(ConnectResult.AuthFailure);
            }
        }
        public ConnectResult Connect()
        {
            var credentials = CredentialsProvider.GetCredentials();

            Imap2Connection instance;

            // Get the connection for the current server and mailbox (username)
            bool isFree = ConnectionPool <Imap2Connection> .AcquireLock(out instance, Hostname, Port, IsSecured, credentials.Claim, credentials.Evidence);

            if (isFree == false)
            {
                return(ConnectResult.Delay);
            }

            connection = instance;

            if (instance == null)
            {
                throw new ChannelFunctionalException("Connection was null in Connect");
            }

            try
            {
                connection.Open();
                connection.Authenticate();

                return(ConnectResult.Success);
            }
            catch (ChannelAuthenticationException ex)
            {
                AuthMessage = ex.Message;

                return(ConnectResult.AuthFailure);
            }
        }