求各位帮帮了,能不能发一份pop3收邮件的代码给我,要支持中文的

解决方案 »

  1.   

    命令解析部分private bool SwitchCommand(string POP3_commandTxt)
    {
    try
    {
    //---- Parse command --------------------------------------------------//
    string[] cmdParts = POP3_commandTxt.TrimStart().Split(new char[]{' '});
    string POP3_command = cmdParts[0];
       POP3_command = POP3_command.ToUpper();
    //---------------------------------------------------------------------// //----- loging stuff --------------------------------------------------------------------------//
    if(m_pPOP3_Server.LogCommands){
    string lCmdTxt = POP3_commandTxt.Replace("\r\n","<CRLF>");
    m_pLogWriter.AddEntry(lCmdTxt,this.SessionID,m_ConnectedIp,"C");
    }
    //---- End of loging ---------------------------------------------------------------------------// switch(POP3_command)
    {
    case "USER":
    USER(Core.GetArgsText(POP3_commandTxt,"USER"));
    break; case "PASS":
    PASS(Core.GetArgsText(POP3_commandTxt,"PASS"));
    break;

    case "STAT":
    STAT();
    break; case "LIST":
    LIST(Core.GetArgsText(POP3_commandTxt,"LIST"));
    break; case "RETR":
    RETR(Core.GetArgsText(POP3_commandTxt,"RETR"));
    break; case "DELE":
    DELE(Core.GetArgsText(POP3_commandTxt,"DELE"));
    break; case "NOOP":
    NOOP();
    break; case "RSET":
    RSET();
    break; case "QUIT":
    QUIT();
    return true;
    //----- Optional commands ----- //
    case "UIDL":
    UIDL(Core.GetArgsText(POP3_commandTxt,"UIDL"));
    break; case "APOP":
    APOP(Core.GetArgsText(POP3_commandTxt,"APOP"));
    break; case "TOP":
    TOP(Core.GetArgsText(POP3_commandTxt,"TOP"));
    break;

    default:
    SendData("-ERR Invalid command\r\n"); //---- Check that maximum bad commands count isn't exceeded ---------------//
    if(m_BadCmdCount > m_pPOP3_Server.MaxBadCommands-1){
    SendData("421 Too many bad commands, closing transmission channel\r\n");
    return true;
    }
    m_BadCmdCount++;
    //-------------------------------------------------------------------------// break;

    }
    }
    catch(Exception x)
    {
    // Connection lost
    if(!m_pClientSocket.Connected){
    return true;
    }

    SendData("-ERR Unkown temp error\r\n");
    m_pPOP3_Server.OnSysError(x,new System.Diagnostics.StackTrace());
    }

    return false;
    }
      

  2.   

    如何使用C#访问POP3服务器
    内容: 
    This is a follow up to my SMTP example that shows how to 
    access your POP3 server. This program connects and logs on 
    to your POP3 server, and checks to see how many new 
    messages you have. The instantiation of the POP is in Main() like this: 
    POP pop = new POP("pop-server", "loginname", "password"); 
    You must replace "pop-server" with the name of your POP 
    server, "loginname" with your own log in, and "password" 
    with your password. The class has two methods. The Connect 
    method takes care of actually logging in to the server. The 
    TCPClient class is used to establish the connection. 
    The "user" and "pass" commands are used to login. Connect 
    returns a NetworkStream object created during the 
    connection process. The second method is 
    GetNumberOfNewMessages, which returns the number of unread 
    messages on the server. The response to the "stat" command 
    is parsed to extract the number of new messages. 
    Requirement:Requires .NET SDK 
    How To Compile?
    csc /r:System.Net.dll /r:System.IO.dll pop.cs  Source Code using System.Net.Sockets; 
    using System.IO; 
    using System.Net; 
    using System;class POP 

    string POPServer; 
    string user; 
    string pwd; 
    public POP(){} 
    public POP(string server, string _user, string _pwd) 

    POPServer = server; 
    user = _user; 
    pwd = _pwd; 

    private NetworkStream Connect() 

    TCPClient sender = new TCPClient(POPServer,110); 
    Byte[] outbytes; 
    string input; 
    NetworkStream ns = null; 
    try{ 
    ns = sender.GetStream(); 
    StreamReader sr = new StreamReader(ns); 
    Console.WriteLine(sr.ReadLine() );input = "user " + user + "\r\n"; 
    outbytes = System.Text.Encoding.ASCII.GetBytes
    (input.ToCharArray()); 
    ns.Write(outbytes,0,outbytes.Length) ; 
    Console.WriteLine(sr.ReadLine() );input = "pass " + pwd + "\r\n"; 
    outbytes = System.Text.Encoding.ASCII.GetBytes
    (input.ToCharArray()); 
    ns.Write(outbytes,0,outbytes.Length) ; 
    Console.WriteLine(sr.ReadLine() );return ns; 

    catch(InvalidOperationException ioe){ 
    Console.WriteLine("Could not connect to mail server"); 
    return ns; 


    public int GetNumberOfNewMessages() 

    Byte[] outbytes; 
    string input; 
    try{ 
    NetworkStream ns = Connect(); 
    StreamReader sr = new StreamReader(ns);input = "stat" + "\r\n"; 
    outbytes = System.Text.Encoding.ASCII.GetBytes
    (input.ToCharArray()); 
    ns.Write(outbytes,0,outbytes.Length); 
    string resp = sr.ReadLine(); 
    Console.WriteLine(resp); 
    string[] tokens = resp.Split(new Char[] {' '});input = "quit" + "\r\n"; 
    outbytes = System.Text.Encoding.ASCII.GetBytes
    (input.ToCharArray()); 
    ns.Write(outbytes,0,outbytes.Length); 
    Console.WriteLine(sr.ReadLine());sr.Close(); 
    ns.Close(); 
    return tokens[1].ToInt32(); 

    catch(InvalidOperationException ioe){ 
    Console.WriteLine("Could not connect to mail server"); 
    return 0; 


    public static void Main() 

    POP pop = new POP("pop-server", "loginname", "password"); 
    Console.WriteLine("New Messages = {0}", 
    pop.GetNumberOfNewMessages() ); 
    Console.ReadLine(); 

    }