第09章 SMTP与POP3应用编程_第1页
第09章 SMTP与POP3应用编程_第2页
第09章 SMTP与POP3应用编程_第3页
第09章 SMTP与POP3应用编程_第4页
第09章 SMTP与POP3应用编程_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1第第9章章SMTP与与POP3应用编程应用编程 9.1 SMTP简介简介9.2 POP3简介简介9.3 邮件收发相关类邮件收发相关类9.4 邮件收发举例邮件收发举例2 2本章重点本章重点本章教学目的本章教学目的 通过实例熟悉异步开发邮件接收及发送程序的核心流程。通过实例熟悉异步开发邮件接收及发送程序的核心流程。本章教学要求本章教学要求(1)熟悉)熟悉SMTP和和POP3编程的流程。编程的流程。(2)掌握如何)掌握如何发送和接收邮件发送和接收邮件。3 39.1 SMTP简介简介9.1.1 SMTP和和ESMTP9.1.2 与邮件服务器连接与邮件服务器连接9.1.3 邮件的发送过程邮件的发送

2、过程4 49.1.1 SMTP和和ESMTP1. SMTP和和ESMTP简介简介 SMTP是是Simple Mail Transfer Protocol的简称,即简单邮件传输协的简称,即简单邮件传输协议议, 命令和响应都是基于命令和响应都是基于 ASCII 文本,命令和响应并均以回车文本,命令和响应并均以回车(CR)和换行()和换行(LF)符结束。)符结束。 SMTP服务器服务器(1)SMTP服务器是遵循服务器是遵循SMTP协议的发送邮件服务器,用来协议的发送邮件服务器,用来发送或中转电子邮件。发送或中转电子邮件。(2)SMTP服务器在服务器在TCP的的25端口监听连接请求。端口监听连接请求。

3、 客户端发送电子邮件过程是:客户端发送电子邮件过程是:先通过客户端软件将邮件发送先通过客户端软件将邮件发送到到SMTP邮件服务器,然后再由邮件服务器,然后再由SMTP邮件服务器发送到目邮件服务器发送到目标标SMTP邮件服务器。邮件服务器。5 59.1.1 SMTP和和ESMTP(续)(续) ESMTP指指Extended SMTP(扩展(扩展 SMTP),), ESMTP与与 SMTP的区别是的区别是:SMTP发信不需要验证用户帐户,而发信不需要验证用户帐户,而ESMTP发信时,服务发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后器会要求用户提供用户名和密码以便验证身份。验证之后

4、的邮件发送过程与的邮件发送过程与SMTP方式完全相同。方式完全相同。提供服务器端软件的方式提供服务器端软件的方式(1)随操作系统一起提供的服务,如)随操作系统一起提供的服务,如IIS中的中的SMTP服务。服务。(2)软件公司提供的)软件公司提供的SMTP服务器软件。服务器软件。6 69.1.1 SMTP和和ESMTP (续)(续)提供客户端软件的方式提供客户端软件的方式(1)Windows应用程序客户端软件,比如应用程序客户端软件,比如OutLook、Foxmail等等(2)提供)提供SMTP服务的公司提供的服务的公司提供的Web应用程序,比应用程序,比如如提供的邮件服务。提供的邮件服务。客户

5、端发送电子邮件过程客户端发送电子邮件过程首先通过首先通过25端口与端口与SMTP邮件服务器建立连接,然后邮件服务器建立连接,然后向服务器发送命令,将邮件发送到向服务器发送命令,将邮件发送到SMTP邮件服务器,邮件服务器,然后再由然后再由SMTP邮件服务器发送到目标邮件服务器发送到目标SMTP邮件服邮件服务器。务器。7 79.1.1 SMTP和和ESMTP (续)(续)2. SMTP的基本命令的基本命令 表表9-1中列出了常用的中列出了常用的SMTP的基本命令的基本命令SMTP命令总共定义了命令总共定义了14个命令,命令由命令码和其后的个命令,命令由命令码和其后的参数域组成。命令码不区分大小写。

6、参数域组成。命令码不区分大小写。 8 89.1.1 SMTP和和ESMTP (续)(续) 在在SMTP协议中,电子邮件由三部分组成,信封、首部和正协议中,电子邮件由三部分组成,信封、首部和正文。文。 1) 信封信封 信封包括发信人的邮件地址和接收人的邮件地址,包括两条信封包括发信人的邮件地址和接收人的邮件地址,包括两条SMTP命令。命令。 MAIL FROM:,告诉,告诉SMTP服务器发信人服务器发信人的地址。的地址。 RCPT TO:,告诉,告诉SMTP服务器收信人的服务器收信人的地址。地址。9 99.1.1 SMTP和和ESMTP (续)(续)2) 首部首部 。首部常用命令:。首部常用命令

7、: FROM:,表明邮件发送者是谁。,表明邮件发送者是谁。 TO:,表明邮件接收者是谁。,表明邮件接收者是谁。 SUBJECT:,表明邮件的主题。,表明邮件的主题。 DATE:,表明发邮件的时间。,表明发邮件的时间。 REPLY-TO:,表明邮件的回复地址。,表明邮件的回复地址。 Content-Type:,表明邮件包含文本、,表明邮件包含文本、HTML超文本和附件类型。超文本和附件类型。 X-Priority:,表明邮件的发送优先级。,表明邮件的发送优先级。 MIME-Version:,指定传输内容的消息、附件及,指定传输内容的消息、附件及其内容格式。其内容格式。10109.1.1 SMTP

8、和和ESMTP (续)(续)3) 正文正文 正文是邮件的内容。首部以一个空行结束,再下面就是正文正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。部分。4) 结束符号结束符号 符合协议的邮件均以符合协议的邮件均以“.”结束。客户端软件接收到邮件后,结束。客户端软件接收到邮件后,再将其转换为某种形式展现给用户。再将其转换为某种形式展现给用户。11119.1.1 SMTP和和ESMTP (续)(续)3.响应信息响应信息 接收方收到接收方收到SMTP命令之后,会给出一个命令之后,会给出一个响应码响应码。发送者在。发送者在发送下一条命令前必须等待应答,成功应答才能继续向下发送下一条命令前必须等

9、待应答,成功应答才能继续向下执行。每个命令必须有且只有一个响应码。执行。每个命令必须有且只有一个响应码。 SMTP响应码由响应码由3位数字组成位数字组成,其后跟一些文本信息其后跟一些文本信息。 格式:格式:3位数字的响应码位数字的响应码文本文本其中,其中,SP表示空格,表示空格,CRLF表示回车换行。表示回车换行。 表表9-212129.1.2 与邮件服务器连接与邮件服务器连接1与与SMTP服务器的连接服务器的连接 命令格式:命令格式:HELO 格式举例:格式举例:HELO Local2与与ESMTP服务器建立连接服务器建立连接 (1)命令格式:)命令格式:EHLO 格式举例:格式举例:EHL

10、O Local (2)启动服务器认证)启动服务器认证 命令格式:命令格式:AUTH LOGIN3断开与服务器的连接断开与服务器的连接 命令格式:命令格式:QUIT客户端发送客户端发送QUIT命令,退出系统,断开与服务器的连接命令,退出系统,断开与服务器的连接13139.1.3 邮件的发送过程邮件的发送过程第第1步:客户端先与服务器建立连接。步:客户端先与服务器建立连接。 客户端发送客户端发送“EHLO Local”命令,服务器收到后返回命令,服务器收到后返回“220”响应码,表示服务器准备就绪。响应码,表示服务器准备就绪。 客户端发送客户端发送“AUTH LOGIN”命令,服务器收到后返回命令

11、,服务器收到后返回“334”响应码,表示要求用户输入用户名。响应码,表示要求用户输入用户名。 客户端发送经过客户端发送经过Base64编码处理的用户名,服务器收到并经编码处理的用户名,服务器收到并经认证成功后返回认证成功后返回“334”响应码,表示要求用户输入密码。响应码,表示要求用户输入密码。 客户端发送经过客户端发送经过Base64编码处理的密码,服务器收到并经认编码处理的密码,服务器收到并经认证成功后返回证成功后返回“235”响应码,表示认证成功,用户可以发送响应码,表示认证成功,用户可以发送邮件。邮件。141410.1.3 邮件的发送过程邮件的发送过程第第2步:客户端开始发送邮件的信封

12、。步:客户端开始发送邮件的信封。 客户端发送客户端发送“MAIL FROM:”命令,服务器命令,服务器收到后返回收到后返回“250”响应码,表示请求操作就绪。响应码,表示请求操作就绪。 客户端发送客户端发送“RCPT TO:”命令,服务器收到命令,服务器收到后返回后返回“250”响应码,表示请求操作就绪。响应码,表示请求操作就绪。第第3步:客户端开始发送邮件数据。步:客户端开始发送邮件数据。 客户端发送客户端发送“DATA”命令,表示开始向服务器发送邮件数命令,表示开始向服务器发送邮件数据,包括邮件的首部和正文。据,包括邮件的首部和正文。 客户端发送邮件首部(可选)。客户端发送邮件首部(可选)

13、。 客户端发送正文。客户端发送正文。 客户端发送客户端发送“QUIT”命令,表示断开连接。命令,表示断开连接。15159.2 POP3简介简介 客户端接收邮件时,可以通过两种方式来读取和保存接收客户端接收邮件时,可以通过两种方式来读取和保存接收到的邮件。到的邮件。 使用使用POP(Post Office Protocol,即邮局协议)用于电子,即邮局协议)用于电子邮件的接收。常用的是第三版,简称邮件的接收。常用的是第三版,简称POP3。POP允许客户允许客户端连接到服务器并且下载所有的邮件到客户机上的邮箱。端连接到服务器并且下载所有的邮件到客户机上的邮箱。 使用使用IMAP(Internet

14、Message Access Protocol,Internet邮件访问协议)。邮件访问协议)。IMAP使用的端口是使用的端口是143,目前常用版,目前常用版本是本是IMAP4。IMAP允许客户端在邮件服务器上建立文件夹允许客户端在邮件服务器上建立文件夹保存邮件而不用下载邮件到客户机上。保存邮件而不用下载邮件到客户机上。16169.2 POP3简介简介 POP3规定每条命令均由命令和参数两部分组成,每条命令规定每条命令均由命令和参数两部分组成,每条命令都以回车(都以回车(CR)换行()换行(LF)结束。命令和参数之间由空格)结束。命令和参数之间由空格间隔。间隔。 POP3服务器回送的响应信息由

15、状态码和附加信息(可选)服务器回送的响应信息由状态码和附加信息(可选)组成。所有响应也以回车(组成。所有响应也以回车(CR)换行()换行(LF)结束。)结束。 状态码有两种:状态码有两种:+OK 表示正确执行了客户端发送的命令表示正确执行了客户端发送的命令-ERR 表示服务器执行命令失败表示服务器执行命令失败17179.2 POP3简介(续)简介(续) POP3命令及执行过程命令及执行过程 假设用假设用C表示客户端(表示客户端(Client),),S表示服务器端(表示服务器端(Server)。)。 客户端首先使用客户端首先使用TCP与与POP3服务器建立连接,连接成功后,服务服务器建立连接,连

16、接成功后,服务器发送一个单行的确认信息,然后要求客户端发送用户名和密码器发送一个单行的确认信息,然后要求客户端发送用户名和密码进行确认,下面是客户端发送的命令:进行确认,下面是客户端发送的命令: 发送用户名。发送用户名。 格式:格式:USER 服务器返回:服务器返回:+OK用户名正确;用户名正确;-ERR用户名错误。用户名错误。 示例:示例:C:USER S:+OK welcome on this server.18189.2 POP3简介(续)简介(续)发送密码发送密码用户名确认成功后,客户端再发送密码。用户名确认成功后,客户端再发送密码。 语法形式:语法形式:PASS 功能:将客户的密码发

17、送给服务器。功能:将客户的密码发送给服务器。 服务器返回:服务器返回:+OK 表示密码正确;表示密码正确; -ERR 表示密码错误。表示密码错误。 示例:示例:C:PASS * S:+OK myname logged in at 19:0419199.2 POP3简介(续)简介(续) 服务器对用户名和密码验证成功后,客户端就可以发送服务器对用户名和密码验证成功后,客户端就可以发送POP3命令要求服务器执行相应的操作。对于每个命令,服务命令要求服务器执行相应的操作。对于每个命令,服务器都会返回应答信息。常用命令有:器都会返回应答信息。常用命令有:STAT命令命令 格式:格式:STAT 功能:从服

18、务器中获邮件总数和总字节数。功能:从服务器中获邮件总数和总字节数。 服务器返回:邮件总数和总字节数。服务器返回:邮件总数和总字节数。 示例:示例:C:STAT S:+OK 2 32020209.2 POP3简介(续)简介(续)LIST命令命令 格式:格式:LIST 功能:从服务中获得邮件列表和大小。功能:从服务中获得邮件列表和大小。 服务器返回:列出邮件列表和大小。服务器返回:列出邮件列表和大小。 示例:示例:C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 200 S: . 注意,注意,“.”单独占一行。单独占一行。21219.2 POP3简介

19、(续)简介(续)RETR命令命令 格式:格式:RETR 功能:从服务器中获得一个邮件。功能:从服务器中获得一个邮件。 服务器返回:服务器返回:+OK成功;成功;-ERR错误。错误。 示例:示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,注意,“.”单独占一行。单独占一行。22229.2 POP3简介(续)简介(续)DELE命令命令 语法形式:语法形式:DELE 功能:服务器将邮件标记为删除,当执行功能:服务器将邮件标记为删除,当执行QUIT命令时才真正删除。命令时才真正删除。 服务器返回:服务器返回:+OK成功;成功;-ERR错误。错误。 示例:示例:C:DE

20、LE 1 S:+OK 1 DeletedQUIT命令命令 格式:格式:QUIT 功能:关闭与服务器的连接。功能:关闭与服务器的连接。 服务器返回:服务器返回:+OK;-ERR。 示例:示例:C:QUIT S:+OK 然后服务器自动断开与该客户端的连接。然后服务器自动断开与该客户端的连接。23239.3 邮件收发相关的类邮件收发相关的类9.3.1 NetworkCredential类类9.3.2 MailAddress类类9.3.3 MailMessage类类9.3.4 Attachment 类类9.3.5 SmtpClient 类类9.3.6 邮件附加信息类邮件附加信息类24249.3.1 N

21、etworkCredential类类 NetworkCredential类用于提供客户端身份验证凭据,提供类用于提供客户端身份验证凭据,提供SMTP服务器需要验证的用户名和密码,用法为:服务器需要验证的用户名和密码,用法为: NetworkCredential myCredentials = new NetworkCredential(“发件人邮箱发件人邮箱, 密码密码);25259.3.2 MailAddress类类 位于位于System.Net.Mail命名空间下命名空间下 MailAddress类用于提供发件人和收件人的邮件地址类用于提供发件人和收件人的邮件地址举例:举例: MailAd

22、dress from = new MailAddress(“发件人邮箱发件人邮箱); MailAddress to = new MailAddress(“收件人邮箱收件人邮箱);26269.3.3 MailMessage类类 位于位于System.Net.Mail命名空间下命名空间下 MailMessage类用于提供邮件的信息,包括主题、内容、类用于提供邮件的信息,包括主题、内容、附件、信息类型等,举例:附件、信息类型等,举例:MailMessage message = new MailMessage(from, to);message.Subject = “我的邮件我的邮件;message.

23、SubjectEncoding = System.Text.Encoding.UTF8;message.Body = “这是邮件内容这是邮件内容;message.BodyEncoding = System.Text.Encoding.UTF8;27279.3.4 Attachment类类 提供附件对象,例如:提供附件对象,例如: Attachment attachFile = new Attachment(“aa.rar);message.Attachments.Add(attachFile);28289.3.5 SmtpClient类类 将电子邮件发送到将电子邮件发送到 SMTP 服务器。服

24、务器。使用使用 SmtpClient 发送的电子邮件包含发送的电子邮件包含Attachment、MailAddress和和MailMessage的相关信息。的相关信息。 构造函数:构造函数:(1)SmtpClient():用专门的配置文件初始化:用专门的配置文件初始化 SmtpClient 类的新实例。类的新实例。配置文件中包括客户端的配置文件中包括客户端的Host、Credentials 和和 Port 属性。属性。(2)SmtpClient(string serverName):用指定的:用指定的 SMTP 服务器发送电服务器发送电子邮件,服务器端口默认为子邮件,服务器端口默认为25。例如

25、:。例如: SmtpClient client = new SmtpClient(“); client.Send(message);(3)SmtpClient(string serverName,int port):指定:指定SMTP服务器和端服务器和端口。例如:口。例如: SmtpClient client = new SmtpClient(“, 25); client.Send(message);29299.3.5 SmtpClient类(续)类(续) 常用属性常用属性Credentials属性:获取或设置验证发件人身份的凭据。属性:获取或设置验证发件人身份的凭据。EnableSsl属性:

26、是否使用安全套接字层加密连接。属性:是否使用安全套接字层加密连接。Port属性:获取或设置属性:获取或设置SMTP服务器端口服务器端口TimeOut属性:获取或设置发送的超时时间。属性:获取或设置发送的超时时间。 常用方法:常用方法: Send方法:采用同步方式发送电子邮件。方法:采用同步方式发送电子邮件。 SendAsync方法:采用异步方式发送电子邮件。方法:采用异步方式发送电子邮件。 SendAsyncCancel方法:取消异步发送。方法:取消异步发送。 SendCompleted事件:异步发送完成时触发。事件:异步发送完成时触发。30309.3.6 邮件附加信息类邮件附加信息类 Sys

27、tem.Net.Mime命名空间包含用于表示命名空间包含用于表示Multipurpose Internet Mail Exchange(MIME,多用途因特网邮件扩展),多用途因特网邮件扩展)标头的类型。标头的类型。 使用使用SmtpClient类发送电子邮件时与类发送电子邮件时与System.Net.Mail命命名空间中的类联合使用,用于指定名空间中的类联合使用,用于指定Content-Type、Content-Disposition和和 Content-transfer-Encoding标头。标头。 表表9-5和表和表9-631319.3.6 邮件附加信息类邮件附加信息类 例如:例如:At

28、tachment attachment = new Attachment(C:a.doc, , MediaTypeNames.Application.Octet);attachment.TransferEncoding = TransferEncoding.Base64;ContentDisposition cd = attachment.ContentDisposition;cd.CreationDate = File.GetCreationTime(pathFileNam);cd.ModificationDate = File.GetLastWriteTime(pathFileName);cd.ReadDate = File.GetLastAccessTime(pathFileName);32329.4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论