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

下载本文档

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

文档简介

第9章 SMTP与POP3应用编程,9.1 SMTP简介 9.2 POP3简介 9.3 邮件收发相关类 9.4 邮件收发举例,本章重点,本章教学目的 通过实例熟悉异步开发邮件接收及发送程序的核心流程。 本章教学要求 (1)熟悉SMTP和POP3编程的流程。 (2)掌握如何发送和接收邮件。,9.1 SMTP简介,9.1.1 SMTP和ESMTP 9.1.2 与邮件服务器连接 9.1.3 邮件的发送过程,9.1.1 SMTP和ESMTP,1. SMTP和ESMTP简介 SMTP 是Simple Mail Transfer Protocol的简称,即简单邮件传输协议, 命令和响应都是基于 ASCII 文本,命令和响应并均以回车(CR)和换行(LF)符结束。 SMTP服务器 (1)SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转电子邮件。 (2)SMTP服务器在TCP的25端口监听连接请求。 客户端发送电子邮件过程是:先通过客户端软件将邮件发送到SMTP邮件服务器,然后再由SMTP邮件服务器发送到目标SMTP邮件服务器。,9.1.1 SMTP和ESMTP(续),ESMTP 指Extended SMTP(扩展 SMTP), ESMTP与 SMTP的区别是: SMTP发信不需要验证用户帐户,而ESMTP发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与SMTP方式完全相同。 提供服务器端软件的方式 (1)随操作系统一起提供的服务,如IIS中的SMTP服务。 (2)软件公司提供的SMTP服务器软件。,9.1.1 SMTP和ESMTP (续),提供客户端软件的方式 (1)Windows应用程序客户端软件,比如OutLook、Foxmail等 (2)提供SMTP服务的公司提供的Web应用程序,比如提供的邮件服务。 客户端发送电子邮件过程 首先通过25端口与SMTP邮件服务器建立连接,然后向服务器发送命令,将邮件发送到SMTP邮件服务器,然后再由SMTP邮件服务器发送到目标SMTP邮件服务器。,9.1.1 SMTP和ESMTP (续),2. SMTP的基本命令 表9-1中列出了常用的SMTP的基本命令 SMTP命令总共定义了14个命令,命令由命令码和其后的参数域组成。命令码不区分大小写。,9.1.1 SMTP和ESMTP (续),在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。 1) 信封 信封包括发信人的邮件地址和接收人的邮件地址,包括两条SMTP命令。 MAIL FROM:,告诉SMTP服务器发信人的地址。 RCPT TO:,告诉SMTP服务器收信人的地址。,9.1.1 SMTP和ESMTP (续),2) 首部 。首部常用命令: FROM:,表明邮件发送者是谁。 TO:,表明邮件接收者是谁。 SUBJECT:,表明邮件的主题。 DATE:,表明发邮件的时间。 REPLY-TO:,表明邮件的回复地址。 Content-Type:,表明邮件包含文本、HTML超文本和附件类型。 X-Priority:,表明邮件的发送优先级。 MIME-Version:,指定传输内容的消息、附件及其内容格式。,9.1.1 SMTP和ESMTP (续),3) 正文 正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。 4) 结束符号 符合协议的邮件均以“.”结束。客户端软件接收到邮件后,再将其转换为某种形式展现给用户。,9.1.1 SMTP和ESMTP (续),3.响应信息 接收方收到SMTP命令之后,会给出一个响应码。发送者在发送下一条命令前必须等待应答,成功应答才能继续向下执行。每个命令必须有且只有一个响应码。 SMTP响应码由3位数字组成,其后跟一些文本信息。 格式: 3位数字的响应码文本 其中,SP表示空格,CRLF表示回车换行。 表9-2,9.1.2 与邮件服务器连接,1与SMTP服务器的连接 命令格式:HELO 格式举例:HELO Local 2与ESMTP服务器建立连接 (1)命令格式:EHLO 格式举例:EHLO Local (2)启动服务器认证 命令格式:AUTH LOGIN 3断开与服务器的连接 命令格式:QUIT 客户端发送QUIT命令,退出系统,断开与服务器的连接,9.1.3 邮件的发送过程,第1步:客户端先与服务器建立连接。 客户端发送“EHLO Local”命令,服务器收到后返回“220”响应码,表示服务器准备就绪。 客户端发送“AUTH LOGIN”命令,服务器收到后返回“334”响应码,表示要求用户输入用户名。 客户端发送经过Base64编码处理的用户名,服务器收到并经认证成功后返回“334”响应码,表示要求用户输入密码。 客户端发送经过Base64编码处理的密码,服务器收到并经认证成功后返回“235”响应码,表示认证成功,用户可以发送邮件。,10.1.3 邮件的发送过程,第2步:客户端开始发送邮件的信封。 客户端发送“MAIL FROM:”命令,服务器收到后返回“250”响应码,表示请求操作就绪。 客户端发送“RCPT TO:”命令,服务器收到后返回“250”响应码,表示请求操作就绪。 第3步:客户端开始发送邮件数据。 客户端发送“DATA”命令,表示开始向服务器发送邮件数据,包括邮件的首部和正文。 客户端发送邮件首部(可选)。 客户端发送正文。 客户端发送“QUIT”命令,表示断开连接。,9.2 POP3简介,客户端接收邮件时,可以通过两种方式来读取和保存接收到的邮件。 使用POP(Post Office Protocol,即邮局协议)用于电子邮件的接收。常用的是第三版,简称POP3。POP允许客户端连接到服务器并且下载所有的邮件到客户机上的邮箱。 使用IMAP(Internet Message Access Protocol,Internet邮件访问协议)。IMAP使用的端口是143,目前常用版本是IMAP4。IMAP允许客户端在邮件服务器上建立文件夹保存邮件而不用下载邮件到客户机上。,9.2 POP3简介,POP3规定每条命令均由命令和参数两部分组成,每条命令都以回车(CR)换行(LF)结束。命令和参数之间由空格间隔。 POP3服务器回送的响应信息由状态码和附加信息(可选)组成。所有响应也以回车(CR)换行(LF)结束。 状态码有两种: +OK 表示正确执行了客户端发送的命令 -ERR 表示服务器执行命令失败,9.2 POP3简介(续),POP3命令及执行过程 假设用C表示客户端(Client),S表示服务器端(Server)。 客户端首先使用TCP与POP3服务器建立连接,连接成功后,服务器发送一个单行的确认信息,然后要求客户端发送用户名和密码进行确认,下面是客户端发送的命令: 发送用户名。 格式:USER 服务器返回:+OK用户名正确;-ERR用户名错误。 示例:C:USER S:+OK welcome on this server.,9.2 POP3简介(续),发送密码 用户名确认成功后,客户端再发送密码。 语法形式:PASS 功能:将客户的密码发送给服务器。 服务器返回:+OK 表示密码正确; -ERR 表示密码错误。 示例:C:PASS * S:+OK myname logged in at 19:04,9.2 POP3简介(续),服务器对用户名和密码验证成功后,客户端就可以发送POP3命令要求服务器执行相应的操作。对于每个命令,服务器都会返回应答信息。常用命令有: STAT命令 格式:STAT 功能:从服务器中获邮件总数和总字节数。 服务器返回:邮件总数和总字节数。 示例:C:STAT S:+OK 2 320,9.2 POP3简介(续),LIST命令 格式:LIST 功能:从服务中获得邮件列表和大小。 服务器返回:列出邮件列表和大小。 示例:C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 200 S: . 注意,“.”单独占一行。,9.2 POP3简介(续),RETR命令 格式:RETR 功能:从服务器中获得一个邮件。 服务器返回:+OK成功;-ERR错误。 示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,“.”单独占一行。,9.2 POP3简介(续),DELE命令 语法形式:DELE 功能:服务器将邮件标记为删除,当执行QUIT命令时才真正删除。 服务器返回:+OK成功;-ERR错误。 示例:C:DELE 1 S:+OK 1 Deleted QUIT命令 格式:QUIT 功能:关闭与服务器的连接。 服务器返回:+OK;-ERR。 示例:C:QUIT S:+OK 然后服务器自动断开与该客户端的连接。,9.3 邮件收发相关的类,9.3.1 NetworkCredential类 9.3.2 MailAddress类 9.3.3 MailMessage类 9.3.4 Attachment 类 9.3.5 SmtpClient 类 9.3.6 邮件附加信息类,9.3.1 NetworkCredential类,NetworkCredential类用于提供客户端身份验证凭据,提供SMTP服务器需要验证的用户名和密码,用法为: NetworkCredential myCredentials = new NetworkCredential(“发件人邮箱“, “密码“);,9.3.2 MailAddress类,位于System.Net.Mail命名空间下 MailAddress类用于提供发件人和收件人的邮件地址 举例: MailAddress from = new MailAddress(“发件人邮箱“); MailAddress to = new MailAddress(“收件人邮箱“);,9.3.3 MailMessage类,位于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;,9.3.4 Attachment类,提供附件对象,例如: Attachment attachFile = new Attachment(“aa.rar“); message.Attachments.Add(attachFile);,9.3.5 SmtpClient类,将电子邮件发送到 SMTP 服务器。 使用 SmtpClient 发送的电子邮件包含Attachment、MailAddress和MailMessage的相关信息。 构造函数: (1)SmtpClient():用专门的配置文件初始化 SmtpClient 类的新实例。配置文件中包括客户端的Host、Credentials 和 Port 属性。 (2)SmtpClient(string serverName):用指定的 SMTP 服务器发送电子邮件,服务器端口默认为25。例如: SmtpClient client = new SmtpClient(““); client.Send(message); (3)SmtpClient(string serverName,int port):指定SMTP服务器和端口。例如: SmtpClient client = new SmtpClient(““, 25); client.Send(message);,9.3.5 SmtpClient类(续),常用属性 Credentials属性:获取或设置验证发件人身份的凭据。 EnableSsl属性:是否使用安全套接字层加密连接。 Port属性:获取或设置SMTP服务器端口 TimeOut属性:获取或设置发送的超时时间。 常用方法: Send方法:采用同步方式发送电子邮件。 SendAsync方法:采用异步方式发送电子邮件。 SendAsyncCancel方法:取消异步发送。 SendCompleted事件:异步发送完成时触发。,9.3.6 邮件附加信息类,System.Net.Mime命名空间包含用于表示Multipurpose Internet Mail Exchange(MIME,多用途因特网邮件扩展)标头的类型。 使用SmtpClient类发送电子邮件时与System.Net.Mail命名空间中的类联合使用,用于指定Content-Type、Content-Disposition和 Content-transfer-Encoding标头。 表9-5和表9-6,9.3.6 邮件附加信息类,例如:Attachment 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(pathFil

温馨提示

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

评论

0/150

提交评论