当前位置:中国站长下载文章中心网页编程.NET编程 → ASP.NET读取POP3邮件的操作

ASP.NET读取POP3邮件的操作

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 9:45:37
     namespace POP3Client
  {
   using System.IO ;
   using System.Net;
   using System.Net.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 C#" 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 C#" 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 C#" 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
   public string DELE(int msg_number)
   {
   string temp;
  
   if (state != connect_state.TRANSACTION )
   {
   //DELE is only valid when the pop session is in the TRANSACTION STATE
   temp="Connection stat

[1] [2]  下一页