瑞鲁手机APP下载网_专注推荐好用的手机APP和游戏APP

pop3邮件收取一例 创建基于ASP.NET的SMTP邮件服务

ASP.NET读取POP3邮件的操作

查看人次:1摘自:瑞鲁游戏APP

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 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  }

}

 

相关文摘:软件资讯 windows
标题名称:《pop3邮件收取一例 创建基于ASP.NET的SMTP邮件服务》
本文网址:https://www.sdruilu.cn/news/tpart-2895.html