C#网络编程---第5章 SMTP与POP3应用编程

上传人:fgh****35 文档编号:248069809 上传时间:2024-10-22 格式:PPT 页数:29 大小:295.50KB
返回 下载 相关 举报
C#网络编程---第5章 SMTP与POP3应用编程_第1页
第1页 / 共29页
C#网络编程---第5章 SMTP与POP3应用编程_第2页
第2页 / 共29页
C#网络编程---第5章 SMTP与POP3应用编程_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,*,第,5,章,SMTP,与,POP3,应用编程,5.1,通过应用程序发送电子邮件,5.2,利用同步,TCP,接收电子邮件,电子邮件是通过,SMTP,服务器进行发送的,,SMTP,是英文,Simple Mail Transfer Protocol,的缩写,意为简单邮件传输协议,默认端口为,25,。使用,SMTP,协议发送邮件时,有两种形式:,1),客户端可以使用匿名方式发送邮件,不使用客户端认证,这种方式即是一般的,SMTP,协议,2),客户端必须提供用户名和密码,这种方式称为,ESMTP,协议,即,Extended SMTP,,或者叫扩展,SMTP,。,3)ESMTP,与,SMTP,的区别除了是否需要认证以外,其他均相同。为了避免或者减少垃圾邮件,目前大部分,SMTP,邮件服务器一般均采用用户名密码认证的方式。,5.1,通过应用程序发送电子邮件,在,SMTP,协议中,电子邮件由三部分组成,信封、首部和正文。,1),信封,信封包括发信人的邮件地址和接收人的邮件地址,用两条,SMTP,命令指明。,MAIL FROM:,,告诉,SMTP,服务器发信人的地址。,RCPT TO:,,告诉,SMTP,服务器收信人地址。,5.1,通过应用程序发送电子邮件,(,续,),5.1,通过应用程序发送电子邮件,(,续,),2),首部,首部中常用命令:,FROM,:,,表明邮件发送者是谁。,TO,:,,表明邮件接收者是谁。,SUBJECT,:,,表明邮件的主题。,DATE,:,,表明发邮件的时间。,REPLY-TO,:,,表明邮件的回复地址。,Content-Type,:,,表明邮件包含文本、,HTML,超文本和附件的哪些类型。,X-Priority,:,,表明邮件的发送优先级。,MIME-Version,:,,,MIME,的意思是,Multipurpose Internet Mail Extensions,,即多用途,Internet,邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。,5.1,通过应用程序发送电子邮件,(,续,),3),正文,正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。,4),结束符号,邮件以“,.”,结束。,5.1,通过应用程序发送电子邮件,(,续,),对于运行在没有专用邮件服务器的大多数客户程序而言,向,SMTP,服务器发送邮件需要提供用户名和密码,服务器验证成功后,才能进行发送或接收。因此在应用程序中发送邮件,需要使用下面几个类:,1),System.Net,命名空间下的,NetworkCredential,类,该类用于提供客户端身份验证机制的凭据。其中包括标准,Internet,身份验证方法(基本、简要、协商、,NTLM,和,Kerberos,身份验证)以及可以创建的自定义方法。在邮件发送中,我们需要使用这个类提供,SMTP,服务器需要的用户名和密码,用法为:,NetworkCredential,myCredentials,=new,NetworkCredential,(,发件人邮件地址,密码,);,5.1,通过应用程序发送电子邮件,(,续,),2),System.Net.Mail,命名空间下的,MailAddress,类,该类用于提供发件人和收件人的邮件地址,常用形式为:,MailAddress,from=new,MailAddress,(,发件人邮件地址,);,MailAddress,to=new,MailAddress,(,收件人邮件地址,);,5.1,通过应用程序发送电子邮件,(,续,),3),System.Net.Mail,命名空间下的,MailMessage,类,该类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用形式为:,MailMessage,message=new,MailMessage(from,to);,message.Subject,=,主题,;,message.SubjectEncoding,=System.Text.Encoding.UTF8;,message.Body,=,邮件内容,;,message.BodyEncoding,=System.Text.Encoding.UTF8;,5.1,通过应用程序发送电子邮件,(,续,),4),System.Net.Mail,命名空间下的,Attachment,类,该类用于提供附件对象,常用形式为:,Attachment,attachFile,=new Attachment(,文件名,);,message.Attachments.Add(attachFile,);,5),SmtpClient,类,该类用于发送邮件,常用形式为:,SmtpClient,client=new,SmtpClient,(,邮件服务器地址,);,client.Send(message,);,5.2,利用同步,TCP,接收电子邮件,收发邮件使用了两种协议,一种是,TCP,协议,用于收发数据;另一种是,POP3,协议,用于解析传送的命令。,接收电子邮件主要是利用,POP,(,Post Office Protocol,)协议,现在常用的是第三版,简称为,POP3,,默认端口为,110,。,通过,POP3,协议,客户机登录到服务器后,可以对自己的邮件进行删除或下载,下载后,电子邮件客户端软件就可以在本地对邮件进行处理。,1.POP3,工作原理,客户端软件读取邮件之前,需要事先与服务器建立,TCP,连接。连接成功后,,POP3,服务器会向该客户端发送确认消息,客户端等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。,这个过程经历了三个状态:授权状态(,AUTHORIZATION,)、操作状态(,TRANSACTION,)和更新状态(,UPDATE,)。,5.2,利用同步,TCP,接收电子邮件(续),2.POP3,协议中的命令,每条命令均由命令和参数两大部分组成,而且每条命令都以回车换行结束。命令和参数之间由空格间隔。,POP3,服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。所有响应也以回车换行结束。状态码有两种:“确定”(“,+OK”,)和“失败”(“,-ERR”,)。,3.POP3,协议工作的具体过程,假设用,C,表示客户端(,Client,),,S,表示服务器端(,Server,)。,1),授权状态,客户端首先与,POP3,服务器建立,TCP,连接,服务器接收后发送一个单行的确认信息。此时,POP3,会话就进入了授权状态。在授权状态,客户需要向服务器发送用户名和密码进行确认,具体命令如下:,5.2,利用同步,TCP,接收电子邮件(续),发送用户名。,语法形式:,USER,功能:将客户的用户名发送到服务器。,服务器返回:,+OK,正确的用户名;,-ERR,错误的用户名。,示例:,C,:,USER ,S,:,+OK welcome on this server.,用户名确认成功后,需要输入密码。,语法形式:,PASS,功能:将客户的密码发送给服务器。,服务器返回:,+OK,正确的用户名;,-OK,错误的用户名。,示例:,C,:,PASS*,S,:,+OK,myname,logged in at 19:04,5.2,利用同步,TCP,接收电子邮件(续),2),操作,状态,授权成功后,,POP3,会话将进入操作状态,客户就可以执行,POP3,命令进行相应的操作。对于每个命令,服务器都会返回应答信息。下面是在操作状态中使用的命令:,STAT,命令,语法形式:,STAT,功能:从服务器中获邮件总数和总字节数。,服务器返回:邮件总数和总字节数。,示例:,C,:,STAT,S,:,+OK 2 320,5.2,利用同步,TCP,接收电子邮件(续),LIST,命令,语法形式:,LIST,功能:从服务中获得邮件列表和大小。,服务器返回:列出邮件列表和大小。,示例:,C,:,LIST,S,:,+OK 2 messages(320 octets),S,:,1 120,S,:,2 200,S,:,.,RETR,命令,语法形式:,RETR ,功能:从服务器中获得一个邮件。,服务器返回:,+OK,成功;,-ERR,错误。,示例:,C,:,RETR 1,S,:,+OK 120 octets,S,:,S,:,.,注意,这里的“,.”,是单独发送的。,5.2,利用同步,TCP,接收电子邮件(续),DELE,命令,语法形式:,DELE,功能:服务器将邮件标记为删除,当执行,QUIT,命令时才真正删除。,服务器返回:,+OK,成功;,-ERR,错误。,示例:,C,:,DELE 1,S,:,+OK 1 Deleted,3),更新状态,当客户在操作状态下发送,QUIT,命令后,会话进入更新状态。,QUIT,命令,语法形式:,QUIT,功能:关闭与服务器的连接。,5.2,利用同步,TCP,接收电子邮件(续),服务器返回:,+OK,;,-ERR,。,示例:,C,:,QUIT,S,:,+OK,然后服务器自动断开与该客户端的,TCP,连接。,2.,邮件接收处理,这个例子中只需要编写客户端程序,而不需要编写服务器端程序即可正常运行。我们重点关心的是如何利用同步,TCP,发送和接收数据。,部分代码,5.2,利用同步,TCP,接收电子邮件(续),建立连接,int,index=,textBoxUser.Text.IndexOf,();,/,大部分,pop3,服务器都加前缀,pop3.,,这里仅获取这种服务器,/,对不以,pop3.,为前缀的这个例子未进行处理,string pop3Server=pop3.+,textBoxUser.Text.Substring(index,+1);,5.2,利用同步,TCP,接收电子邮件(续),/,建立与,POP3,服务器的连接,使用默认端口,110,tcpClient,=new TcpClient(pop3Server,110);,listBoxStatus.Items.Add,(,与,pop3,服务器连接成功,);,/,获取,Networkstream,对象,以便通过建立好的连接发送和接收数据,networkStream,=,tcpClient.GetStream,();,/,得到读对象,并查找字节顺序标记,防止显示乱码,sr,=new,StreamReader(networkStream,);,/,得到写对象,sw,=new,StreamWriter(networkStream,);,/,读取服务器回送的连接信息,if(,ReadDataFromServer,()=null)return;,5.2,利用同步,TCP,接收电子邮件(续),/,向服务器发送用户名,请求确认,if(,SendDataToServer(USER,+,textBoxUser.Text,)=false)return;,if(,ReadDataFromServer,()=null)return;,/,向服务器发送密码,请求确认,if(,SendDataToServer(PASS,+,textBoxPassword.Text,)=false)return;,if(,ReadDataFromServer,()=null)return;,/,向服务器发送,STAT,命令,请求获取邮件总数和总字节数,if(,SendDataToServer(LIST,)=false)return;,if(,str,=,ReadDataFromServer,()=null)return;,5.2,利用同步,TCP,接收电子邮件(续),从网络流中读取服务器回送的信息,写入信息列表框,string,str,=null;,str,=,sr.ReadLine,();,listBoxStatus.Items.Add,(,收到:,+,str,);,/,如果是,-ERR,,表明有错,if(
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!