public void TestReset()
		{
			const string welcomeMessage = "+OK";
			const string okUsername = "******";
			const string okPassword = "******";
			const string resetOk = "+OK";
			const string serverResponses = welcomeMessage + "\r\n" + okUsername + "\r\n" + okPassword + "\r\n" + resetOk + "\r\n";

			Stream inputStream = new MemoryStream(Encoding.ASCII.GetBytes(serverResponses));
			MemoryStream outputStream = new MemoryStream();

			Pop3Client client = new Pop3Client();
			client.Connect(new CombinedStream(inputStream, outputStream));
			client.Authenticate("test", "test");

			client.Reset();

			// Get the last command issued by the client
			string output = GetLastCommand(new StreamReader(new MemoryStream(outputStream.ToArray())).ReadToEnd());

			// We expect it to be RSET
			const string expectedOutput = "RSET";

			Assert.AreEqual(expectedOutput, output);
		}
예제 #2
0
        private void ReceivingLoop()
        {
            using (Pop3Client client = new Pop3Client())
            {
                for (; ; )
                {
                    try
                    {
                        if (!client.Connected)
                        {
                            client.Connect("pop.gmail.com", 995, true);
                            client.Authenticate(mail_username, mail_password);
                            List<string> uids = client.GetMessageUids();
                            List<Message> newMessages = new List<Message>();

                            for (int i = 0; i < uids.Count; i++)
                            {
                                string currentUidOnServer = uids[i];
                                Message unseenMessage = client.GetMessage(i + 1);
                                newMessages.Add(unseenMessage);
                            }

                            for (int i = 0; i < newMessages.Count; i++)
                            {
                                Console.WriteLine("Message: " + newMessages.ElementAt(i).ToMailMessage().Body);
                                ConvertReceivedToOrder(newMessages.ElementAt(i).Headers.Subject, newMessages.ElementAt(i).ToMailMessage().Body);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Cannot connect: " + e.Message);
                        Thread.Sleep(2000);
                    }
                    finally
                    {
                        try
                        {
                            if (client.Connected) client.Disconnect();
                            do Thread.Sleep(500); while (client.Connected);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Cannot disconnect - reset connection: " + e.Message);
                            client.Reset();
                            Thread.Sleep(2000);
                        }
                    }
                }
            }
        }