Click or drag to resize
MimeKit

Pop3Capabilities Enumeration

Capabilities supported by a POP3 server.

Namespace: MailKit.Net.Pop3
Assembly: MailKit (in MailKit.dll) Version: 4.7.1
Syntax
C#
[FlagsAttribute]
public enum Pop3Capabilities
Members
Member nameValueDescription
None0 The server does not support any additional extensions.
Apop1 The server supports APOP authentication.
Expire2 The server supports the EXPIRE extension and defines the expiration policy for messages (see ExpirePolicy).
LoginDelay4 The server supports the LOGIN-DELAY extension, allowing the server to specify to the client a minimum number of seconds between login attempts (see LoginDelay).
Pipelining8 The server supports the PIPELINING extension, allowing the client to batch multiple requests to the server at at time.
ResponseCodes16 The server supports the RESP-CODES extension, allowing the server to provide clients with extended information in error responses.
Sasl32 The server supports the SASL authentication extension, allowing the client to authenticate using the advertized authentication mechanisms (see AuthenticationMechanisms).
StartTLS64 The server supports the STLS extension, allowing clients to switch to an encrypted SSL/TLS connection after connecting.
Top128 The server supports the TOP command, allowing clients to fetch the headers plus an arbitrary number of lines.
UIDL256 The server supports the UIDL command, allowing the client to refer to messages via a UID as opposed to a sequence ID.
User512 The server supports the USER authentication command, allowing the client to authenticate via a plain-text username and password command (not recommended unless no other authentication mechanisms exist).
UTF81,024 The server supports the UTF8 extension, allowing clients to retrieve messages in the UTF-8 encoding.
UTF8User2,048 The server supports the UTF8=USER extension, allowing clients to authenticate using UTF-8 encoded usernames and passwords.
Lang4,096 The server supports the LANG extension, allowing clients to specify which language the server should use for error strings.
Remarks
Capabilities are read as part of the response to the CAPA command that is issued during the connection and authentication phases of the Pop3Client.
Example
C#
public static void PrintCapabilities ()
{
    using (var client = new Pop3Client ()) {
        client.Connect ("pop.gmail.com", 995, SecureSocketOptions.SslOnConnect);

        if (client.Capabilities.HasFlag (Pop3Capabilities.SASL)) {
            var mechanisms = string.Join (", ", client.AuthenticationMechanisms);
            Console.WriteLine ("The POP3 server supports the following SASL mechanisms: {0}", mechanisms);
        }

        client.Authenticate ("username", "password");

        if (client.Capabilities.HasFlag (Pop3Capabilities.Apop))
            Console.WriteLine ("The server supports APOP authentication.");

        if (client.Capabilities.HasFlag (Pop3Capabilities.Expire)) {
            if (client.ExpirePolicy > 0)
                Console.WriteLine ("The POP3 server automatically expires messages after {0} days", client.ExpirePolicy);
            else
                Console.WriteLine ("The POP3 server will never expire messages.");
        }

        if (client.Capabilities.HasFlag (Pop3Capabilities.LoginDelay))
            Console.WriteLine ("The minimum number of seconds between login attempts is {0}.", client.LoginDelay);

        if (client.Capabilities.HasFlag (Pop3Capabilities.Pipelining))
            Console.WriteLine ("The POP3 server can pipeline commands, so using client.GetMessages() will be faster.");

        if (client.Capabilities.HasFlag (Pop3Capabilities.Top))
            Console.WriteLine ("The POP3 server supports the TOP command, so it's possible to download message headers.");

        if (client.Capabilities.HasFlag (Pop3Capabilities.UIDL))
            Console.WriteLine ("The POP3 server supports the UIDL command which means we can track messages by UID.");

        client.Disconnect (true);
    }
}
See Also