namespace POP3Client { using System.IO ; using System; using System.Sockets ; //Please note that all code is copyright 2002 by William J Dean public class POP3client { public enum connect_state {disc,AUTHORIZATION,TRANSACTION,UPDATE}; public string user; public string pwd; public string pop; public bool error; public connect_state state=connect_state.disc ; //borrowed from Agus Kurniawan''s article:"Retrieve Mail From a POP3 Server Using " at http://www.codeproject.com/csharp/popapp.asp private TcpClient Server; private NetworkStream NetStrm; private StreamReader RdStrm; private string Data; private byte szData; private string CRLF = "\r\n"; public POP3client() { //nothing to do..just create to object } public POP3client(string pop_server,string user_name,string password) { //put the specied server (pop_server), user (user_name) and password (password) //into the appropriate properties. pop=pop_server; user=user_name; pwd=password; } #region Utility Methods, some public, some private public string connect (string pop_server) { pop=pop_server; //put the specified server into the pop property return(connect()); //call the connect method } public string connect() { //Initialize to the pop server. This code snipped "borrowed" //with some modifications //from the article "Retrieve Mail From a POP3 Server Using " at //www.codeproject.com by Agus Kurniawan //http://www.codeproject.com/csharp/popapp.asp // create server with port 110 Server = new TcpClient(pop,110); try { // initialization NetStrm = Server.GetStream(); RdStrm= new StreamReader(Server.GetStream()); //The pop session is now in the AUTHORIZATION state state=connect_state.AUTHORIZATION ; return(RdStrm.ReadLine ()); } catch(InvalidOperationException err) { return("Error: "+err.ToString()); } } private string disconnect () { string temp="disconnected successfully."; if(state !=connect_state.disc) { //close connection NetStrm.Close(); RdStrm.Close(); state=connect_state.disc ; } else { temp="Not Connected."; } return(temp); } private void issue_command(string command) { //send the command to the pop server. This code snipped "borrowed" //with some modifications //from the article "Retrieve Mail From a POP3 Server Using " at //www.codeproject.com by Agus Kurniawan //http://www.codeproject.com/csharp/popapp.asp Data= command + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); } private string read_single_line_response() { //read the response of the pop server. This code snipped "borrowed" //with some modifications //from the article "Retrieve Mail From a POP3 Server Using C#" at //www.codeproject.com by Agus Kurniawan //http://www.codeproject.com/csharp/popapp.asp string temp; try { temp = RdStrm.ReadLine(); was_pop_error(temp); return(temp); } catch(InvalidOperationException err) { return("Error in read_single_line_response(): " + err.ToString ()) ; } } private string read_multi_line_response() { //read the response of the pop server. This code snipped "borrowed" //with some modifications //from the article "Retrieve Mail From a POP3 Server Using C#" at //www.codeproject.com by Agus Kurniawan //http://www.codeproject.com/csharp/popapp.asp string temp=""; string szTemp; try { szTemp = RdStrm.ReadLine(); was_pop_error(szTemp); if(!error) { while(szTemp!=".") { temp += szTemp+CRLF; szTemp = RdStrm.ReadLine(); } } else { temp=szTemp; } return(temp); } catch(InvalidOperationException err) { return("Error in read_multi_line_response(): " + err.ToString ()); } } private void was_pop_error(string response) { //detect if the pop server that issued the response believes that //an error has occured. if(response.StartsWith ("-")) { //if the first character of the response is "-" then the //pop server has encountered an error executing the last //command send by the client error=true; } else { //success error=false; } } #endregion #region POP commands |
&