电子邮件收发系统毕业论文 第9页

电子邮件收发系统毕业论文 第9页
6、 最后,客户端发送QUIT指令,表示要求结束连接,服务器响应221信息,表示同意结束,则所有流程结束。

4.2有关邮件收发系统的协议二POP3
4.2.1POP3协议流程
POP3流程
1、 认证
2、 邮件接收
3、 根据Transaction流程的定义,更新邮件信箱。
与SMTP相比,POP3的指令内容较为简单,因为在每个阶段,RFC均定义了客户端所发送指令的格式以及服务器端响应的内容。
(1) 客户端所发送的指令必须以CRLF结尾。
(2) 服务器响应的信息,只用两种情况。
 +OK:表示指令正确执行
 -ERR:表示指令执行错误。
此外,在POP3的每个阶段,均有相应的指令应用。

4.2.2认证阶段指令
认证阶段指令
指令 语法
USER USER<loginname>
PASS PASS<password>
QUIT QUIT

代码如下:
  //Socket初始化
            Socket ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //连接服务器
            try
            {
                ClientSocket.Connect(RecServer, int.Parse(RecServerPort));
            }
            catch (Exception ex) { throw new MyException("从<" + MailAddress + ">接收邮件失败:" + ex.Message); }
            Rec(ClientSocket);
            if (RecString.IndexOf("OK") < 0)
            {
                ClientSocket.Close();
                throw new MyException("从<" + MailAddress + ">接收邮件失败:错误发生在与服务器的连接!");
            }

            //发送USER
            ClientSocket.Send(System.Text.Encoding.Default.GetBytes("user " + RecServerUser + "\r\n"));
            Rec(ClientSocket);
            if (RecString.IndexOf("OK") < 0)
            {
                ClientSocket.Close();
                throw new MyException("从<" + MailAddress + ">接收邮件失败:错误发生在用户名校验!");
            }
//发送PASS
            ClientSocket.Send(System.Text.Encoding.Default.GetBytes("pass " + RecServerPassword + "\r\n"));
            Rec(ClientSocket);
            if (RecString.IndexOf("OK") < 0)
            {
                ClientSocket.Close();
                throw new MyException("从<" + MailAddress + ">接收邮件失败:错误发生在密码校验!");
            }

4.2.3邮件发送阶段指令
邮件发送阶段指令
指令 语法
STAT STAT
LIST LIST(mail#)
RETR RETR[mail#]
DELE DELE
NOOP NOOP
RSET RSET
代码如下:

//发送STAT
            ClientSocket.Send(System.Text.Encoding.Default.GetBytes("stat\r\n"));
            Rec(ClientSocket);
            if (RecString.IndexOf("OK") < 0)
            {
                ClientSocket.Close();
                throw new MyException("从<" + MailAddress + ">接收邮件失败:错误发生在通知收件服务器准备接受邮件!");
            }
            string[] RecStrings = RecString.Split(' ');
            int Count = Int32.Parse(RecStrings[1]);

            //发送LIST
            ClientSocket.Send(System.Text.Encoding.Default.GetBytes("list\r\n"));
            Rec(ClientSocket);
            if (RecString.IndexOf("OK") < 0)
            {
                ClientSocket.Close();
                throw new MyException("从<" + MailAddress + ">接收邮件失败:错误发生在从服务器中获得邮件列表和字节大小!");
            }

            //获取邮件           
            for (int a = 1; a <= Count; a++)
            {
                Thread.Sleep(100);
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes("retr " + a + "\r\n"));
                Rec(ClientSocket);
                string RecvMail = "";//清除提示信息
                while (RecvMail.IndexOf("\r\n.\r\n") < 0)
                {
                    Len = ClientSocket.Receive(Buff);
                    RecvMail += System.Text.Encoding.Default.GetString(Buff, 0, Len);
                }                if (!IsLeaveMessage)

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有