资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,*,第十三章,SMTP,与,POP3,协议开发,13.1,电子邮件的工作原理,13.2,简单邮件传输协议(,SMTP),13.3,邮件发送举例,13.4,POP3,协议,13.5,邮件接收处理举例,13.1 电子邮件的工作原理,电子邮件是一种存储转发式的服务,利用存储转发进行非实时的通信,属异步通信方式。,电子邮件的管理是通过邮件服务器来实现的,它实际上是一个连接在通信网上的计算机系统。,13.2,简单邮件传输协议(,SMTP),电子邮件的组成,1.信封,信封包括发信人的邮件地址和接收人的邮件地址,用两条,SMTP,命令指明。,2.,首部(,首部中常用字段格式,见教材,),3,.,正文,正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。,邮件以“,.,”结束。,与邮件服务器连接,与,SMTP,服务器的连接,使用命令格式:,HELO,格式举例:,HELO Local,2.,与,ESMTP,服务器建立连接,(1),使用命令格式:,EHLO,格式举例:,EHLO Local,(2),启动服务器认证,命令格式:,AUTH LOGIN,3.,断开与服务器的连接,命令格式:,QUIT,使用,QUIT,命令退出系统,断开与服务器的连接。,邮件的发送过程,以与,ESMTP,服务器建立连接发送邮件为例。,1.客户端先与服务器建立连接,1),客户端发送,EHLO Local,2),客户端发送,AUTH LOGIN,3),客户端发送经过,Base64,编码处理的用户名,4),客户端发送经过,Base64,编码处理的密码,2.客户端开始发送邮件的信封,5),客户端发送,MAIL FROM:,6),客户端发送,RCPT TO:,3.客户端开始发送邮件数据,7),客户端发送,DATA,8),客户端可以选择发送邮件的首部字段,9),客户端发送一个空行表示邮件首部结束。,10),客户端开始发送正文。,11),客户端发送“,.,”表示邮件发送结束。,4.,客户端先服务器断开连接,12),客户端发送,QUIT,表示断开连接。,13.3,邮件发送举例,利用,TcpClient,类直接发送邮件,1.建立一个,Windows,应用程序项目,设计窗体如图所示。,窗体中主要控件属性见表,13-1,。,2.,添加名称空间引用。,using System.Net;,using System.Net.Sockets;,using System.IO;,3.,添加字段声明。,TcpClient smtpSrv,;,NetworkStream netStrm,;,string CRLF=rn;,4.书写代码。,1),添加,WriteStream,方法。,该方法通过连接向服务器输出字符串数据。,2),添加,AuthStream,方法。,该方法用于将普通字符串转换为等效的以,64,为基的字符串,即,Base64,编码形式。,3),修改,buttonSend,_click(),事件,该事件用于发送邮件。,5.运行该项目。运行界面如图13-2所示。,利用,SmtpMail,类发送邮件,Microsoft,在.,NET,中提供了,SmtpMail,类,它可,以直接发送电子邮件,该类属于,System.Web.Mail,命名空间。,发送举例,private,MailMessage mailMessage,=new,MailMessage,();,mailMessage,.To=,收件人地址;,mailMessage,.From=,发件人地址;,mailMessage,.Subject=,主题;,mailMessage,.Body=,邮件正文;,SmtpMail,.Send(,mailMessage,);,或者,SmtpMail,.Send(,发件人地址,收件人地址,主题,邮件正文,);,13.4,POP3,协议,POP,(,Post Office Protocol,),协议,即邮局协议,用,于电子邮件的接收,现在常用的是第三版,简称为,POP3,。,具体介绍见教材。,13.5,邮件接收处理举例,本节以实例讲解邮件的接收处理过程。,1.,建立一个新的项目,设计窗体如图所示。窗体中主要控件属性,见表13-3。,2.在,Form1.,cs,文件中增添名空间引用。,using System.Net;,using System.Net.Sockets;,using System.IO;,声明变量,public,TcpClient,Server;,public,NetworkStream NetStrm,;,public,StreamReader RdStrm,;,public string Data;,public byte,szData,;,public string CRLF=rn;,3.书写代码,1),修改,buttonCon,_Click,事件。,该事件与服务器建立连接,读取总邮件数,,并将邮件编号显示在列表框中。,2),修改,buttonDiscon,_Click,事件。,该事件断开与服务器的连接。,3),修改,buttonRead,_Click,事件。,读取制定的邮件内容,显示在文本框中。,4),修改,buttonDel,_Click,事件。,该事件删除指定的邮件。,4.运行。,运行结果如图13-4所示。,
展开阅读全文