我写了个小东西,用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();
            }
        }