How to POP3 in C#

Supporting Functions

The List, Retrieve and Delete methods used two private methods, Write and Response, to send and receive messages from the POP3 server.

private void Write(string message)
    System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding() ;

    byte[] WriteBuffer = new byte[1024] ;
    WriteBuffer = en.GetBytes(message) ;

    NetworkStream stream = GetStream() ;
    stream.Write(WriteBuffer, 0, WriteBuffer.Length);

    Debug.WriteLine("WRITE:" + message);

C# native strings, like Java native strings, are UNICODE. We therefore need to encode and decode the strings to and from ASCII. After encoding the string, we can then retrieve the socket stream by calling the TcpClient.GetStream method. I finish the Write method by called the Debug.Writeline method. This sends the string to the debug stream for help with debugging.

private string Response()
    System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
    byte[] serverbuff = new Byte[1024];
    NetworkStream stream = GetStream();
    int count = 0;
    while (true)
        byte[] buff = new Byte[2];
        int bytes = stream.Read(buff, 0, 1 );
        if (bytes == 1)
            serverbuff[count] = buff[0];

            if (buff[0] == '\n')

    string retval = enc.GetString(serverbuff, 0, count );
    Debug.WriteLine("READ:" + retval);
    return retval;

The Response method is similar to the Write method accept that we retrieve bytes from the stream before decoding them. Again we call the Debug.WriteLine method to send the read data to the debug stream and help with debugging. Note that we have a limitation in the Response method. We can only retrieve or send up to 1024 bytes at a time. I'll fix this in a later release. If you intend to use this in production, then you'll have to do the same first.

You might also like...


About the author

Randy Charles Morin

Randy Charles Morin Canada

Randy's article are Copyright 1998-2003 Randy Charles Morin

Interested in writing for us? Find out more.


Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.” - Rich Cook