public IList <MailMessage> ReadAll()
        {
            var result = new List <MailMessage>();

            logger.ConnectingToPop3Server(this.hostname);

            using (Pop3Client client = new Pop3Client())
            {
                client.Connect(hostname, port, useSsl);
                client.Authenticate(username, password);

                logger.ConnectedToPop3Server(this.hostname);

                try
                {
                    int numMessages = client.GetMessageCount();
                    logger.FoundMessages(numMessages);

                    for (int messageNo = 1; messageNo <= numMessages; messageNo++)
                    {
                        logger.ReadingMessage(messageNo);
                        var pop3mail = client.GetMessage(messageNo);
                        logger.MessageRead(pop3mail);

                        var message = MakeMessage(pop3mail);
                        SaveAttachments(pop3mail, message);

                        result.Add(message);
#if !DEBUG
                        logger.DeletingMessage(messageNo);
                        client.DeleteMessage(messageNo);
#endif
                    }//for

                    logger.DisconnectingFromPop3Server(this.hostname);
                    // also forces message deletion
                    client.Disconnect();
                    logger.DisconnectedFromPop3Server(this.hostname);
                }
                catch (Exception e)
                {
                    logger.ErrorWhileReadingFromPop3Server(this.hostname, e);
                }//try

                return(result);
            }//using
        }