我的程序是这样的:
/// <summary>
/// 关于接收件的代码
/// </summary>        private void contactBtn_Click(object sender, EventArgs e)
        {
            //将光标置为等待状态
            //Cursor cr = Cursor.Current;
            //Cursor.Current = Cursors.WaitCursor;
            try
            {
                //用110端口新建POP3服务器连接
                client=new TcpClient(emailAddressText.Text.Trim(),110);
                //获得TCP连接的网络流对象
                netstream=client.GetStream();
               
                //创建一个用于读取该网络流的StreamReader对象
                streamReader=new StreamReader(netstream,System.Text.Encoding.UTF8);
                //读取网络流中的一行响应信息
                returnData=streamReader.ReadLine();
                //将响应信息显示在状态栏中
                statusText.Text="连接服务器:"+returnData+CRLF;
                //验证用户名
                sendData="USER"+emailUNameText.Text.Trim()+CRLF;
                byteSendData=Encoding.ASCII.GetBytes(sendData.ToCharArray());
                netstream.Write(byteSendData,0,byteSendData.Length);
                returnData=streamReader.ReadLine();
                statusText.Text="验证用户名:"+returnData+CRLF;                //向服务器发送STAT命令,取得邮件的数量和大小
                sendData="STAT"+CRLF;
                byteSendData=Encoding.ASCII.GetBytes(sendData.ToCharArray());
                netstream.Write(byteSendData,0,byteSendData.Length);
                returnData=streamReader.ReadLine();
                statusText.Text="邮件数量和大小:"+returnData+CRLF;                //改变按钮的状态
                contactBtn.Enabled=false;
                disconnectBtn.Enabled=true;
                receiveBtn.Enabled=true;                //将光标置回原来的位置
                //Cursor.Current=cr;
            }
            catch(Exception ex)
            {
                statusText.Text=ex.Message+CRLF;
            }
        }        private void disconnectBtn_Click(object sender, EventArgs e)
        {
            //将光标置为等待状态
            //Cursor cr = Cursor.Current;
            //Cursor.Current = Cursors.WaitCursor;            //向服务器发送QUIT命令,结束和POP3服务器的会话
            sendData="QUIT"+CRLF;
            byteSendData = Encoding.ASCII.GetBytes(sendData.ToCharArray());
            netstream.Write(byteSendData, 0, byteSendData.Length);
            returnData = streamReader.ReadLine();
            statusText.Text = "断开连接:" + returnData + CRLF ;            //关闭网络流和读取器
            netstream.Close();
            streamReader.Close();            //改变按钮的状态
            contactBtn.Enabled = true;
            disconnectBtn.Enabled = false;
            receiveBtn.Enabled = false;            //将光标置回原来的位置
            //Cursor.Current = cr;            
        }        private void recieveEmailBtn_Click(object sender, EventArgs e)
        {
            emailText.Clear();            //将光标置为等待状态
            //Cursor cr = Cursor.Current;
            //Cursor.Current = Cursors.WaitCursor;
            try
            {
                //根据邮件编号从服务器获取相应邮件
                sendData="RETR"+eamilNoText.Text.Trim()+CRLF;
                byteSendData = Encoding.ASCII.GetBytes(sendData.ToCharArray());
                netstream.Write(byteSendData, 0, byteSendData.Length);
                returnData = streamReader.ReadLine();
                //如果读取成功,则在“邮件信息”文本框中显示邮件的详细信息
                if(returnData!="-")
                {
                    //不断读取邮件内容,直到结束标志:英文句号
                    while(returnData!=".")
                    {
                        emailText.Text+=returnData;
                        returnData=streamReader.ReadLine();
                    }
                    //若backupCheckBox未选中,则收取邮件后,删除保留在服务器上的邮件
                    if(backupCheckBox.Checked==false)
                    {
                        sendData="DELE"+eamilNoText.Text.Trim()+CRLF;
                        byteSendData = Encoding.ASCII.GetBytes(sendData.ToCharArray());
                        netstream.Write(byteSendData, 0, byteSendData.Length);
                        returnData = streamReader.ReadLine();
                        statusText.Text="删除保留在服务器上的邮件:"+returnData+CRLF;                    }
                }
                else //如果读取失败,则在“状态”列表框中显示失败信息
                {
                    statusText.Text="读取邮件:"+returnData+CRLF;
                }                //将光标置回原来的位置
                //Cursor.Current = cr;
            }
            catch( Exception ex)
            {
                statusText.Text = ex.Message + CRLF ;
            }        }
     }