Members

Technology Zones

IBM Learning Center

Articles

Hosted By

MaximumASP

Info

Rated
Read 122,896 times

Contents

Related Categories

How to POP3 in C# - Retrieving Messages

randy

Retrieving Messages

Between the calls to Connect and Disconnect, the client may call three other methods, List, Retrieve and Delete, any number of times. The client will usually begin by calling our List method to retrieve an array of messages that are queued on the POP3 server.

public ArrayList List()
{
    string message;
    string response;

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

    while (true)
    {
        response = Response();
        if (response == ".\r\n")
        {
            return retval;
        }
        else
        {
            Pop3Message msg = new Pop3Message();
            char[] seps = { ' ' };
            string[] values = response.Split(seps);
            msg.number = Int32.Parse(values[0]);
            msg.bytes = Int32.Parse(values[1]);
            msg.retrieved = false;
            retval.Add(msg);
            continue;
        }
    }
}

After sending the LIST message to the POP3 server, the server will respond with a +OK acknowledgement, followed by several lines representing one message each and finally by a line with a single period indicating the end of the messages. Each message line has two numbers, the first indicating the unique number of the message and the second indicating the message size in bytes.

Our List method will return a list of Pop3Message objects. The objects will only contain the message number and size of each message. In order to retrieve the full message, you can pass the message object to the Retrieve method. The Retrieve method will then respond with another Pop3Message containing the message content.

public Pop3Message Retrieve(Pop3Message rhs)
{
    string message;
    string response;

    Pop3Message msg = new Pop3Message();
    msg.bytes = rhs.bytes;
    msg.number = rhs.number;

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

    msg.retrieved = true;
    while (true)
    {
        response = Response();
        if (response == ".\r\n")
        {
            break;
        }
        else
        {
            msg.message += response;
        }
    }

    return msg;
}

To retrieve a message from a POP3 server, we send a RETR message with the unique message number. The server then responds with the +OK acknowledgement, the message content and finally the single period terminating line.

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

Comments

  • Re: [4071] How to POP3 in C#

    Posted by mrymyousefii on 30 Jul 2008

    I got codes for receiving email from one of the article and made some necessary adjustments, but giving me this exception:


     


    System.Net.Sockets.SocketException...

  • Re: [4071] How to POP3 in C#

    Posted by burnt1ce85 on 12 Jun 2008

    Most pop3 mail servers encrypt their connection using SSL (port: 995). This tutorial seems to only cover accessing email using an unecrypted connection. Anyone knows a tutorial that covers encrypte...

  • Re: C#.net coding regards

    Posted by seamnia on 12 Nov 2007

    Hi VidyaRe: [4071] How to POP3 in C#

    Posted by thilagam on 20 Aug 2007

    Thanks for publishing this wonderfull article. I want to know how to save the attachment to the specified location automatically

  • mail.dll

    Posted by lesnikowski on 10 Nov 2005

    [url="http://www.lesnikowski.com/mail"]http://www.lesnikowski.com/mail[/url]