Click or drag to resize
MimeKit

Pop3CommandExceptionStatusText Property

Get the response status text.

Namespace: MailKit.Net.Pop3
Assembly: MailKit (in MailKit.dll) Version: 4.3.0
Syntax
C#
public string StatusText { get; }

Property Value

String
The response status text.
Remarks
Gets the response status text.
Example
C#
public static void DownloadNewMessages (HashSet<string> previouslyDownloadedUids)
{
    using (var client = new Pop3Client ()) {
        IList<string> uids = null;

        try {
            client.Connect ("pop.gmail.com", 995, SecureSocketOptions.SslOnConnect);
        } catch (Pop3CommandException ex) {
            Console.WriteLine ("Error trying to connect: {0}", ex.Message);
            Console.WriteLine ("\tStatusText: {0}", ex.StatusText);
            return;
        } catch (Pop3ProtocolException ex) {
            Console.WriteLine ("Protocol error while trying to connect: {0}", ex.Message);
            return;
        }

        try {
            client.Authenticate ("username", "password");
        } catch (AuthenticationException ex) {
            Console.WriteLine ("Invalid user name or password.");
            return;
        } catch (Pop3CommandException ex) {
            Console.WriteLine ("Error trying to authenticate: {0}", ex.Message);
            Console.WriteLine ("\tStatusText: {0}", ex.StatusText);
            return;
        } catch (Pop3ProtocolException ex) {
            Console.WriteLine ("Protocol error while trying to authenticate: {0}", ex.Message);
            return;
        }

        // for the sake of this example, let's assume GMail supports the UIDL extension
        if (client.Capabilities.HasFlag (Pop3Capabilities.UIDL)) {
            try {
                uids = client.GetMessageUids ();
            } catch (Pop3CommandException ex) {
                Console.WriteLine ("Error trying to get the list of uids: {0}", ex.Message);
                Console.WriteLine ("\tStatusText: {0}", ex.StatusText);

                // we'll continue on leaving uids set to null...
            } catch (Pop3ProtocolException ex) {
                Console.WriteLine ("Protocol error while trying to authenticate: {0}", ex.Message);

                // Pop3ProtocolExceptions often cause the connection to drop
                if (!client.IsConnected)
                    return;
            }
        }

        for (int i = 0; i < client.Count; i++) {
            if (uids != null && previouslyDownloadedUids.Contains (uids[i])) {
                // we must have downloaded this message in a previous session
                continue;
            }

            try {
                // download the message at the specified index
                var message = client.GetMessage (i);

                // write the message to a file
                if (uids != null) {
                    message.WriteTo (string.Format ("{0}.msg", uids[i]));

                    // keep track of our downloaded message uids so we can skip downloading them next time
                    previouslyDownloadedUids.Add (uids[i]);
                } else {
                    message.WriteTo (string.Format ("{0}.msg", i));
                }
            } catch (Pop3CommandException ex) {
                Console.WriteLine ("Error downloading message {0}: {1}", i, ex.Message);
                Console.WriteLine ("\tStatusText: {0}", ex.StatusText);
                continue;
            } catch (Pop3ProtocolException ex) {
                Console.WriteLine ("Protocol error while sending message {0}: {1}", i, ex.Message);
                // most likely the connection has been dropped
                if (!client.IsConnected)
                    break;
            }
        }

        if (client.IsConnected) {
            // if we do not disconnect cleanly, then the messages won't actually get deleted
            client.Disconnect (true);
        }
    }
}
See Also