Simple POP3 Application In C#

This snippet shows how to connect to a pop3 mail server.


Program.cs

  1. using System;
  2. using System.Collections;
  3. using System.IO;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. class Program
  7. {
  8.     static void Main(string[] args)
  9.     {
  10.         POP3 popClient = new POP3("");
  11.         popClient.Username = "";
  12.         popClient.Password = "";
  13.         popClient.Authenticate();
  14.         Console.WriteLine("Total Messages in INBOX: " + popClient.MessageCount);
  15.         int MessageCount = popClient.MessageCount;
  16.         ArrayList message = new ArrayList();
  17.         for (int i = 1; i < MessageCount; i++)
  18.         {
  19.             message = popClient.GetHeaders(1);
  20.             Console.WriteLine(message[0]);
  21.             Console.WriteLine(message[1]);
  22.         }
  23.         Console.ReadKey();
  24.     }
  25. }

POP3.cs

  1. class POP3
  2. {
  3.     private TcpClient tcpClient;
  4.     private StreamReader sReader;
  5.     private StreamWriter sWriter;
  6.     private NetworkStream nStream;
  7.     private string username = "";
  8.     private string password = "";
  9.     public POP3(string host)
  10.     {
  11.         try
  12.         {
  13.             tcpClient = new TcpClient(host, 110);
  14.             if (tcpClient.Connected)
  15.             {
  16.                 nStream = tcpClient.GetStream();
  17.                 sReader = new StreamReader(nStream);
  18.                 sWriter = new StreamWriter(nStream);
  19.                 Console.WriteLine("Connected To POP Server");
  20.                 Console.WriteLine("Host: " + host);
  21.                 Console.WriteLine(GetResponse());
  22.             }
  23.         }
  24.         catch (Exception e)
  25.         {
  26.             Console.WriteLine(e.Message);
  27.         }
  28.     }
  29.     private string GetResponse()
  30.     {
  31.         string response ="";
  32.         while (true)
  33.         {
  34.             response += sReader.ReadLine();
  35.             if (response !=".")
  36.             {
  37.                 break;
  38.             }
  39.         }
  40.         return response;
  41.     }
  42.     public string Username
  43.     {
  44.         set
  45.         {
  46.             this.username = value;
  47.         }
  48.     }
  49.     public string Password
  50.     {
  51.         set
  52.         {
  53.             this.password = value;
  54.         }
  55.     }
  56.     public void Authenticate()
  57.     {
  58.         sWriter.WriteLine("User " + this.username);
  59.         sWriter.Flush();
  60.         Console.WriteLine(GetResponse());
  61.         sWriter.WriteLine("Pass " + this.password);
  62.         sWriter.Flush();
  63.         Console.WriteLine(GetResponse());
  64.     }
  65.     public int MessageCount
  66.     {
  67.         get
  68.         {
  69.             sWriter.WriteLine("stat");
  70.             sWriter.Flush();
  71.             string[] splitResponse = GetResponse().Split(' ');
  72.             return Convert.ToInt32(splitResponse[1]);
  73.         }
  74.     }
  75.     public ArrayList GetHeaders(int index)
  76.     {
  77.         ArrayList message = new ArrayList();
  78.         sWriter.WriteLine("top " + index + " 0");
  79.         sWriter.Flush();
  80.         string response;
  81.         while (true)
  82.         {
  83.             response = sReader.ReadLine();
  84.             if (response ==".")
  85.             {
  86.                 break;
  87.             }
  88.             if (response.Length > 4)
  89.             {
  90.                 try
  91.                 {
  92.                     if (response.Substring(0, 5) == "From:")
  93.                     {
  94.                         message.Add(response);
  95.                     }
  96.                     if (response.Substring(0, 8) == "Subject:")
  97.                     {
  98.                         message.Add(response);
  99.                     }
  100.                 }
  101.                 catch { }
  102.             }
  103.         }
  104.         return message;
  105.     }
  106. }

No comments:

Post a Comment