POP3Clientpop3Client类实现pop3协议中的九种基本方法(私有):DELE, LIST, NOOP, PASS, QUIT, RETR, RSET, STAT
并通过这九种基本方法实现以下功能:
1,连接邮箱(建立一个tcp连接:端口一般为110,可另行指定)
2,得到邮箱里的总邮件数
3,列出邮件列表(邮件ID,主题)
4,下载一封邮件
5,删除一封邮件
6,取消删除邮件操作
7,断开邮箱连接pop3Client类还维护一个pop3邮箱连接的状态(四种状态),pop3的九种方法都必须在相应该的状态下才能执行
1,断开状态(Disconnect):在没有连接邮箱时都视为断开状态
2,验证状态(AUTHORIZATION):在没执行成功PASS之前,连接邮箱之后,均为验证状态
3,会话状态(TRANSACTION):LIST,STAT,RETR
4,更新状态(UPDATE):DELEPOP3基本方法的执行流程:
1,检查该命令载当前的POP状态中是否有效。
2,如果有效,发送命令到服务器。
3,读取响应结果。
4,(如果需要)改变POP状态。POP3操作成功判断
当返回字符串中第一个字符为"+",则为成功,为"-",则失败pop3命令(每个命令以CRLF:"\r\n"结束,以下每行命令和返回有换行均视为CRLF)
1,USER
  格式: USER username 
  响应:
     成功: +OK .....
     失败: -ERR ....
  功能:指定邮箱的用户名
2,PASS
  格式: PASS password
  响应:
     成功: +OK .....
     失败: -ERR ....
  功能:口令
3,NOOP
  格式: NOOP
  响应:
     成功: +OK 
  功能:测试服务器是否能响应
   格式: USER username 
4,STAT
  格式: STAT
  响应:
     成功: +OK: nn mm
  功能:得到邮件数nn和总大小mm
5,LIST
   格式:LIST
   响应:
       成功:+OK id size
                id size
.
       失败:ERR
   功能:列出每封邮件的大小(size)和序号(ID)
6,RETR
   格式 RETR ID
   响应:
       成功:+OK 邮件体..
       失败:ERR
   功能:收取一封邮件(根据序号ID)
7,DELE
   格式:DELE ID
   响应:
       成功:+OK
       失败:-ERR
   功能:删除一封邮件(根据序号ID)
 8,RESET
    格式:RESET 
    响应:
       成功:+OK
       失败:-ERR
    功能:恢复删除
 9,QUIT
    格式:QUIT
    响应:
        成功:+OK

解决方案 »

  1.   

    谢谢,我最想知道如何保存成eml格式;直接写成mime文件太麻烦。
      

  2.   

    public NetworkStream NetStrm;
    public StreamReader  RdStrm;
    public string Data;
    public byte[] szData;
    public string CRLF = "\r\n";
    if (File.Exists("MyMail.eml")) 
    {
            Console.WriteLine("{0} already exists.", "MyMail.eml");
      return;
    }
    StreamWriter sr = File.CreateText("MyMail.eml");string szTemp;
    try
    {
    Data = "RETR " +  “第几封邮件”+ CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length); szTemp = RdStrm.ReadLine();
    if(szTemp[0]!='-') 
    {
         while(szTemp!=".")
        {
                      // 写进文件
                      sr.WriteLine(szTemp);
                      // 从网络上取得信息并给szTemp
    szTemp = RdStrm.ReadLine();
                  } }

    // back to normal cursor
    Cursor.Current = cr;
    sr.Close();在做上面这个之前,你要先登入邮箱。
      

  3.   

    我已经决定,还是自己写一个mime文件的读写器,没办法,谢谢兄弟们,接分!
      

  4.   

    支持SMTP,POP3,FTP,HTTP多种协议,使用方便,操作简单并且提供多种示例 
    http://www.eastasp.com/zh-cn/products/eastasp.framework.net/index.aspx