Click or drag to resize
MimeKit

Pop3ClientAuthenticationMechanisms Property

Gets the authentication mechanisms supported by the POP3 server.

Namespace: MailKit.Net.Pop3
Assembly: MailKit (in MailKit.dll) Version: 4.3.0
Syntax
C#
public override HashSet<string> AuthenticationMechanisms { get; }

Property Value

HashSetString
The authentication mechanisms.

Implements

IMailServiceAuthenticationMechanisms
IMailServiceAuthenticationMechanisms
Remarks

The authentication mechanisms are queried as part of the connection process.

Servers that do not support the SASL capability will typically support either the APOP authentication mechanism (Apop) or the ability to login using the USER and PASS commands (User).

Tip  Tip

To prevent the usage of certain authentication mechanisms, simply remove them from the AuthenticationMechanisms hash set before authenticating.

In the case of the APOP authentication mechanism, remove it from the Capabilities property instead.

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