回 帖 发 新 帖 刷新版面

主题:求高手帮解决下判断新邮件的问题。

我写了个小东西,用C#访问我的邮箱,能够检测到邮箱里有多少邮件,并且能够访问邮件的内容。 
但是有两个问题: 
1、我无法区分那些邮件是新邮件,比如说,我的程序第一次访问,发现有10份邮件,第二次访问,发现有11分,但是我无法区分那一封是新来的。 
2、我想用邮件到来的日期来区分,但是现在的方法是通过检查整个邮件的内容来获取想要的信息,如果赶上个邮件带个大附件,就很慢很慢,有没有一个只获取邮件到来日期的方法。 
3、如果有更好的方法请告诉我,目的是检测有没有“新”邮件。就是上次检测时没检测到的邮件。 

下面附部分代码: 
      public TcpClient Server;        //用以和服务器建立TCP连接 
        public NetworkStream NetStrm;   //客户机和服务器会话使用的数据流 
        public StreamReader RdStrm;     //用以操作数据流,从数据流中获取从服务器反馈的数据 
        public string Data; 
        public byte[] szData; 
        public string CRLF = "\r\n"; 

 private void RetrieveBtn_Click(object sender, EventArgs e) 
        { 
            Cursor cr = Cursor.Current; 
            Cursor.Current = Cursors.WaitCursor; 
            string szTemp; 
            String[] arrTemp; 
            bool strBody = false; 
            String[] arrRet = new String[10]; 
        //    MessageBox.Show(arrRet[1]); 
            Message.Clear(); 
            //清除邮件内容显示区 
            try 
            { 
                Data = "RETR " + numericUpDown1.Value.ToString() + CRLF; 
                // 定义接收邮箱中的第几封邮件的命令 
                szData = System.Text.Encoding.GetEncoding("gb2312").GetBytes(Data.ToCharArray()); 
                NetStrm.Write(szData, 0, szData.Length); 
                //向服务器发送接收邮件命令 
                szTemp = RdStrm.ReadLine(); 
             //   MessageBox.Show(szTemp); 
                Message.Text=szTemp; 

               if (szTemp[0] != '-') 
                { 
                    //解析接收的邮件内容,并按条目不同显示 
                     
                  while (szTemp != ".") 
                    { 
                        arrTemp = szTemp.Split(":".ToCharArray()); 
                        if (szTemp == "") 
                            strBody = true; 
                        if (arrTemp[0] == "Date") 
                        { arrRet[1] = arrTemp[1]; Message.Text = "发送时间:" + arrRet[1] + CRLF; MessageBox.Show(arrRet[1]); } 
                      //   if (arrTemp[0] == "From")//break; 
                      //      arrRet[2] = arrTemp[1]; 
                     //   if (arrTemp[0] == "To") 
                     //       arrRet[3] = arrTemp[1]; 
                     //   if (arrTemp[0] == "Subject") 
                      //   arrRet[4] = arrTemp[1]; 
                    //    if (strBody) 
                    //       arrRet[5] = arrRet[5] + szTemp; 
                       
                      //     //显示邮件发送时间信息 
                  //    Message.Text = Message.Text + "发送者:" + arrRet[2] + CRLF; 
                       //显示发信人 
                    //     Message.Text = Message.Text + "接收者:" + arrRet[3] + CRLF; 
                         //显示目的地址 
                   //   Message.Text = Message.Text + "主题:" + arrRet[4] + CRLF; 
                         //显示邮件主题 
                     //  Message.Text = Message.Text + "内容:" + arrRet[5] + CRLF; 
                        //显示邮件内容 
                       // 
                        szTemp = RdStrm.ReadLine();  
                    } 
                } /**/ 
                Cursor.Current = cr; 
             //  RdStrm.Close(); 
                //回复光标 
            } 
            catch (InvalidOperationException err) 
            { 
                statusBar1.Text = "错误: " + err.ToString(); 
            } 
        }

回复列表 (共11个回复)

11 楼

目前还没解决。。。也是正在进行中。

我来回复

您尚未登录,请登录后再回复。点此登录或注册