• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ASP.NET讀取POP3郵件的操作

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    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,UPDAT

    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 suclearcase/" target="_blank" >ccessfully.";
          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 state not = TRANSACTION";
          }
          else
          {
            issue_command("DELE " + msg_number.ToString ());
            temp=read_single_line_response();     
          }
          return(temp);
        }

        public string LIST()
        {
          string temp="";
          if (state != connect_state.TRANSACTION )
          {
            //the pop command LIST is only valid in the TRANSACTION state
            temp="Connection state not = TRANSACTION";
          }
          else
          {
            issue_command ("LIST");
            temp=read_multi_line_response();
          }
          return(temp);     
        }

        public string LIST(int msg_number)
        {
          string temp="";

          if (state != connect_state.TRANSACTION )
          {
            //the pop command LIST is only valid in the TRANSACTION state
            temp="Connection state not = TRANSACTION";
          }
          else
          {
            issue_command ("LIST " + msg_number.ToString ());
            temp=read_single_line_response(); //when the message number is supplied, expect a single line response
          }
          return(temp);

        }

        public string NOOP()
        {
          string temp;
          if (state != connect_state.TRANSACTION )
          {
            //the pop command NOOP is only valid in the TRANSACTION state
            temp="Connection state not = TRANSACTION";
          }
          else
          {
            issue_command ("NOOP");
            temp=read_single_line_response();

          }
          return(temp);

        }
        public string PASS()
        {
          string temp;
          if (state != connect_state.AUTHORIZATION)
          {
            //the pop command PASS is only valid in the AUTHORIZATION state
            temp="Connection state not = AUTHORIZATION";
          }
          else
          {
            if (pwd !=null)
            {
              issue_command ("PASS " + pwd);
              temp=read_single_line_response();

              if (!error)
              {
                //transition to the Transaction state
                state=connect_state.TRANSACTION;
              }
            }
            else
            {
              temp="No Password set.";
            }
          }
          return(temp);
        }
        public string PASS(string password)
        {
          pwd=password;  //put the supplied password into the appropriate property
          return(PASS()); //call PASS() with no arguement
        }

        public string QUIT()
        {
          //QUIT is valid in all pop states

          string temp;
          if (state !=connect_state.disc)
          {
            issue_command ("QUIT");
            temp=read_single_line_response();
            temp += CRLF + disconnect();
     
          }
          else
          {
            temp="Not Connected.";
          }
          return(temp);

        }
        public string RETR (int msg)
        {
          string temp="";
          if (state != connect_state.TRANSACTION )
          {
            //the pop command RETR is only valid in the TRANSACTION state
            temp="Connection state not = TRANSACTION";
          }
          else
          {
            // retrieve mail with number mail parameter
            issue_command ("RETR "+ msg.ToString ());
            temp=read_multi_line_response();
          }
          return(temp);

        }

        public string RSET()
        {
          string temp;
          if (state != connect_state.TRANSACTION )
          {
            //the pop command STAT is only valid in the TRANSACTION state
            temp="Connection state not = TRANSACTION";
          }
          else
          {
            issue_command("RSET");
            temp=read_single_line_response();
          }
          return(temp);

        }

        public string STAT()
        {
          string temp;
          if (state==connect_state.TRANSACTION)
          {
            issue_command("STAT");
            temp=read_single_line_response();

            return(temp);
          }
          else

          {
            //the pop command STAT is only valid in the TRANSACTION state
            return ("Connection state not = TRANSACTION");
          }
        }   

        public string USER()
        {
          string temp;
          if (state != connect_state.AUTHORIZATION)
          {
            //the pop command USER is only valid in the AUTHORIZATION state
            temp="Connection state not = AUTHORIZATION";
          }
          else
          {
            if (user !=null)
            { 
              issue_command("USER "+ user);
              temp=read_single_line_response();
            }
            else
            {  //no user has been specified
              temp="No User specified.";
            }
          }
          return(temp);
        }

        public string USER(string user_name)
        {
          user=user_name; //put the user name in the appropriate propertity
          return(USER()); //call USER with no arguements
        }
        #endregion
      }

    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>