毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

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

更新时间:2010-5-6:  来源:毕业论文
电子邮件收发系统毕业论文 第8页
MTP流程,它是由RFC821定义的
1、 首先,客户端尝试建立与邮件服务器建立连接,并且等候邮件服务器返回220 Ready的信息,当客户端收到此信息时,会发出HELO<Mail Server>信息,以响应邮件服务器。
代码如下:
//Socket初始化
                Socket ClientSocket =w new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//连接服务器
                ClientSocket.Connect(OutgoingMailServerStr, OutPort);
//接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "220")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在与服务器的连接!");
                }
//发送命令“helo <客户端标识(域名或IP)>”
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes("helo " + OutgoingMailServerStr + "\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "250")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在向服务器标识用户身份!");
                }

                //发送命令“auth login\r\n”
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes("auth login\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "334")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在认证!");
                }
如果服务器要求验证客户端登录信息,客户端则发送账户和密码进行验证。
具体代码如下:
//发送用户名
                OutUserStr = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(OutUserStr));
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes(OutUserStr + "\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "334")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在用户名校验!");
                }

                //发送密码
                OutPassword = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(OutPassword));
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes(OutPassword + "\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "235")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在密码校验!");
                }
 
2、 邮件发送是以MAIL FROM:指令开始。首先,客户端发出MAIL FROM:<发件人E-mail地址>的信息,若发件人的E-mail地址正确,会发出250 OK信息,否则会返回550 信息。
设计代码如下:
//发送命令“mail from:<发件人邮箱地址>\r\n”
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes("mail from:<" + AddressStr + ">\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "250")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在发件人的认证!");
                }


3、 随后客户端会发出RCPT TO:<发件人E-mail Address>指令,以代表收件人的E-mail地址,若正确,服务器返回250,否返回550信息。
代码如下:
for (int a = 0; a < ToCCBCCStrs.Length; a++)
                {
                    //发送命令“rcpt to:<收件人邮箱地址>\r\n”
                    ClientSocket.Send(System.Text.Encoding.Default.GetBytes("rcpt to:<" + ToCCBCCStrs[a] + ">\r\n"));
                    //接收响应
                    Rec(ClientSocket);
                    if (RespondInfo[0] != "250")
                    {
                        ClientSocket.Close();
                        throw new MyException("错误发生在收件人的认证!");
                    }
                }
4、 开始处理邮件标题及内容,客户端会开始先发送出DATA指令,以告知邮件服务器将要开始发送邮件标题及内容。若正确,会响应354信息,随后开始发送邮件标题及内容,每行以<CRLF>结尾。
代码如下:
//发送命令“data\r\n”
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes("data\r\n"));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "354")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在数据传输的初始化!");
                }

                //发送数据
                PackMail();
                ClientSocket.Send(System.Text.Encoding.Default.GetBytes(Content));
                //接收响应
                Rec(ClientSocket);
                if (RespondInfo[0] != "250")
                {
                    ClientSocket.Close();
                    throw new MyException("错误发生在数据的发送!");
                }5、 发送邮件标题及内容后,必须发送一个特殊的字符串,以代表邮件内容发送结束,特殊字符串为:<CRLF>.<CRLF>。服务器返回250 OK信息表示发送成功。

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

电子邮件收发系统毕业论文 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。