Pop |
public override HashSet<string> AuthenticationMechanisms { get; }
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 |
---|
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. |
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); } }