예제 #1
0
        // --------------------------- RunList --------------------------------
        // run the List command on the server
        public MailDropMessages RunList( )
        {
            MailDropMessages messages = new MailDropMessages( );

            string[] listLines = null;
            SockEx.SendReceive("LIST" + PopConstants.CrLf);
            while (true)
            {
                if (ResponseIsPopTerminated(SockEx.ResponseBuilder) == true)
                {
                    break;
                }
                SockEx.SleepThenReadMoreAvailableData(1000);
            }
            listLines = Stringer.Split(SockEx.ResponseMessage, NetworkConstants.CrLf);

            // parse the list line output into an arraylist of MailDropMessages.
            for (int Ix = 0; Ix < listLines.Length; ++Ix)
            {
                string line = listLines[Ix];
                if ((line[0] == '+') || (line[0] == '.'))
                {
                    continue;
                }
                messages.AddMessage(new MailDropMessage(line));
            }

            return(messages);
        }
예제 #2
0
 public string RunStat( )
 {
     SockEx.SendReceive("STAT" + PopConstants.CrLf);
     if (SockEx.ResponseMessageEndsWithCrLf( ) == false)
     {
         SockEx.SleepThenReadMoreAvailableData(1000);
     }
     return(SockEx.ResponseMessage);
 }
예제 #3
0
        // ----------------------- NextEmail ----------------------------------
        public bool NextEmail( )
        {
            string returned;

            long pos;

            if (m_directPosition == -1)
            {
                if (m_inboxPosition == 0)
                {
                    pos = 1;
                }
                else
                {
                    pos = m_inboxPosition + 1;
                }
            }
            else
            {
                pos = m_directPosition + 1;
                m_directPosition = -1;
            }

            SockEx.ExpectedResponseCodes =
                new ExpectedResponseCodes(PopConstants.Ok, PopConstants.Error);
            SockEx.SendReceive("list " + pos.ToString( ) + PopConstants.CrLf);
            if (SockEx.ExpectedResponseCode == PopConstants.Error)
            {
                return(false);
            }
            else
            {
                SockEx.ThrowIfUnexpectedResponse( );
            }

            // positive response: +ok MessagePosition MessageSize.
            returned = SockEx.ResponseMessage;

            m_inboxPosition = pos;

            // strip out CRLF ...
            string[] noCr = returned.Split(new char[] { '\r' });

            // get size ...
            string[] elements = noCr[0].Split(new char[] { ' ' });

            System.Int64 size = System.Int64.Parse(elements[2]);

            // ... else read email data
            m_pop3Message = new Pop3Message(m_inboxPosition, mSockEx);

            return(true);
        }
예제 #4
0
        public bool DeleteEmail()
        {
            bool ret = false;

            SockEx.ExpectedResponseCodes = new ExpectedResponseCodes(PopConstants.Ok);
            SockEx.SendReceive("dele " + m_inboxPosition);
            SockEx.ThrowIfUnexpectedResponse( );
            string returned = SockEx.ResponseMessage;

            if (Regex.Match(returned,
                            @"^.*\+OK.*$").Success)
            {
                ret = true;
            }

            return(ret);
        }
예제 #5
0
 public void CloseConnection()
 {
     SockEx.Send("quit");
     mSockEx       = null;
     m_pop3Message = null;
 }