Library tutorials & articles

How to POP3 in C#

Connecting and Disconnecting

The first method of our Pop3 class is the Connect method. This method takes a server name, username and password parameter to connect to a remote (sometimes local) POP3 server.

public void Connect(string server, string username, string password)
{
    string message;
    string response;

    Connect(server, 110);
    response = Response();
    if (response.Substring(0, 3) != "+OK")
    {
        throw new Pop3Exception(response);
    }

    message = "USER " + username + "\r\n";
    Write(message);
    response = Response();
    if (response.Substring(0, 3) != "+OK")
    {
        throw new Pop3Exception(response);
    }

    message = "PASS " + password + "\r\n";
    Write(message);
    response = Response();
    if (response.Substring(0, 3) != "+OK")
    {
        throw new Pop3Exception(response);
    }
}

We begin by calling the TcpClient.Connect method passing the server name and the 110 port. The 110 port number is the well known port number for POP3 operations. What that means is that POP3 servers by default should listen for connections on port 110. When the POP3 server connects to a client, it should immediately respond with the +OK acknowledgement message. Next we send two messages, USER and PASS, back to the server. The POP3 server should acknowledge a successful login by acknowledging both messages. If the POP3 server returns anything but +OK, then the message will contain the reason for the failure. In the advent of a failure, I attach that failure message to our exception class and throw it back to the client. It should be noted that some POP3 servers don't require authentication and may reject the calls to USER and PASS. I haven't encountered such a POP3 server, but the protocol allows it. In those cases, you'll have to slightly modify the class to make things work.

Any use of our Pop3 class should begin with a call to Connect and end with a class to Disconnect.

public void Disconnect()
{
    string message;
    string response;
    message = "QUIT\r\n";
    Write(message);
    response = Response();
    if (response.Substring(0, 3) != "+OK")
    {
        throw new Pop3Exception(response);
    }
}

The Disconnect method sends a QUIT message to the POP3 server.

AddThis

Comments

Leave a comment

Sign in or Join us (it's free).

Events coming up

  • Dec 6

    Developing AJAX Web Applications with Castle Monorail

    London, United Kingdom

    Monorail is the model-view-controller engine of the Castle Project, bringing many of the best ideas of Ruby on Rails to the .NET world. In this talk, David De Florinier and Gojko Adzic show how Monorail makes it easy to develop .NET based AJAX applications, and how to use the Castle Project to build Web 2.0 applications effectively. Come to this session if you are a .NET web developer. Everyone is welcome!