C#SMTP与POP3应用编程.ppt

上传人:牧羊曲112 文档编号:6502331 上传时间:2023-11-07 格式:PPT 页数:20 大小:331.97KB
返回 下载 相关 举报
C#SMTP与POP3应用编程.ppt_第1页
第1页 / 共20页
C#SMTP与POP3应用编程.ppt_第2页
第2页 / 共20页
C#SMTP与POP3应用编程.ppt_第3页
第3页 / 共20页
C#SMTP与POP3应用编程.ppt_第4页
第4页 / 共20页
C#SMTP与POP3应用编程.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C#SMTP与POP3应用编程.ppt》由会员分享,可在线阅读,更多相关《C#SMTP与POP3应用编程.ppt(20页珍藏版)》请在三一办公上搜索。

1、第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的区别除了是否需要认证以外,其他均相同。为了避免或者减少垃圾邮件,目前大部分

2、SMTP邮件服务器一般均采用用户名密码认证的方式。,5.1 通过应用程序发送电子邮件,在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。1)信封 信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。MAIL FROM:,告诉SMTP服务器发信人的地址。RCPT TO:,告诉SMTP服务器收信人地址。,5.1 通过应用程序发送电子邮件(续),5.1 通过应用程序发送电子邮件(续),2)首部 首部中常用命令:FROM:,表明邮件发送者是谁。TO:,表明邮件接收者是谁。SUBJECT:,表明邮件的主题。DATE:,表明发邮件的时间。REPLY-TO:,表明邮件的回复地址。Co

3、ntent-Type:,表明邮件包含文本、HTML超文本和附件的哪些类型。X-Priority:,表明邮件的发送优先级。MIME-Version:,MIME的意思是Multipurpose Internet Mail Extensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。,5.1 通过应用程序发送电子邮件(续),3)正文 正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。4)结束符号 邮件以“.”结束。,5.1 通过应用程序发送电子邮件(续),对于运行在没有专用邮件服务器的大多数客户程序而言,向SMTP服务器发送邮件需要提供用户名和

4、密码,服务器验证成功后,才能进行发送或接收。因此在应用程序中发送邮件,需要使用下面几个类:1)System.Net命名空间下的NetworkCredential类 该类用于提供客户端身份验证机制的凭据。其中包括标准Internet身份验证方法(基本、简要、协商、NTLM和Kerberos身份验证)以及可以创建的自定义方法。在邮件发送中,我们需要使用这个类提供SMTP服务器需要的用户名和密码,用法为:NetworkCredential myCredentials=new NetworkCredential(发件人邮件地址,密码);,5.1 通过应用程序发送电子邮件(续),2)命名空间下的Mail

5、Address类 该类用于提供发件人和收件人的邮件地址,常用形式为:MailAddress from=new MailAddress(发件人邮件地址);MailAddress to=new MailAddress(收件人邮件地址);,5.1 通过应用程序发送电子邮件(续),3)命名空间下的MailMessage类 该类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用形式为:MailMessage message=new MailMessage(from,to);message.Subject=主题;message.SubjectEncoding=System.Text.Encodin

6、g.UTF8;message.Body=邮件内容;message.BodyEncoding=System.Text.Encoding.UTF8;,5.1 通过应用程序发送电子邮件(续),4)命名空间下的Attachment类 该类用于提供附件对象,常用形式为:Attachment attachFile=new Attachment(文件名);message.Attachments.Add(attachFile);5)SmtpClient类 该类用于发送邮件,常用形式为:SmtpClient client=new SmtpClient(邮件服务器地址);client.Send(message);

7、,5.2 利用同步TCP接收电子邮件,收发邮件使用了两种协议,一种是TCP协议,用于收发数据;另一种是POP3协议,用于解析传送的命令。接收电子邮件主要是利用POP(Post Office Protocol)协议,现在常用的是第三版,简称为POP3,默认端口为110。通过POP3协议,客户机登录到服务器后,可以对自己的邮件进行删除或下载,下载后,电子邮件客户端软件就可以在本地对邮件进行处理。1.POP3工作原理 客户端软件读取邮件之前,需要事先与服务器建立TCP连接。连接成功后,POP3服务器会向该客户端发送确认消息,客户端等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多

8、次,一直持续到连接终止。这个过程经历了三个状态:授权状态(AUTHORIZATION)、操作状态(TRANSACTION)和更新状态(UPDATE)。,5.2 利用同步TCP接收电子邮件(续),2.POP3协议中的命令 每条命令均由命令和参数两大部分组成,而且每条命令都以回车换行结束。命令和参数之间由空格间隔。POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。所有响应也以回车换行结束。状态码有两种:“确定”(“+OK”)和“失败”(“-ERR”)。3.POP3协议工作的具体过程 假设用C表示客户端(Client),S表示服务器端(Server)。1)授权状态 客户端首先

9、与POP3服务器建立TCP连接,服务器接收后发送一个单行的确认信息。此时POP3会话就进入了授权状态。在授权状态,客户需要向服务器发送用户名和密码进行确认,具体命令如下:,5.2 利用同步TCP接收电子邮件(续),发送用户名。语法形式:USER 功能:将客户的用户名发送到服务器。服务器返回:+OK正确的用户名;-ERR错误的用户名。示例:C:S:+OK welcome on this server.用户名确认成功后,需要输入密码。语法形式:PASS 功能:将客户的密码发送给服务器。服务器返回:+OK正确的用户名;-OK错误的用户名。示例:C:PASS*S:+OK myname logged i

10、n at 19:04,5.2 利用同步TCP接收电子邮件(续),2)操作状态 授权成功后,POP3会话将进入操作状态,客户就可以执行POP3命令进行相应的操作。对于每个命令,服务器都会返回应答信息。下面是在操作状态中使用的命令:STAT命令 语法形式:STAT 功能:从服务器中获邮件总数和总字节数。服务器返回:邮件总数和总字节数。示例:C:STAT S:+OK 2 320 LIST命令 语法形式:LIST 功能:从服务中获得邮件列表和大小。,5.2 利用同步TCP接收电子邮件(续),服务器返回:列出邮件列表和大小。示例:C:LIST S:+OK 2 messages(320 octets)S:

11、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 Deleted3)更新状态 当客户在操作状态下发送QUIT命令后,会话进入更新状态。QUIT命令 语法形式:QUIT 功能:关闭与服务器的连接。,

12、5.2 利用同步TCP接收电子邮件(续),服务器返回:+OK;-ERR。示例:C:QUIT S:+OK 然后服务器自动断开与该客户端的TCP连接。2.邮件接收处理 这个例子中只需要编写客户端程序,而不需要编写服务器端程序即可正常运行。我们重点关心的是如何利用同步TCP发送和接收数据。部分代码,5.2 利用同步TCP接收电子邮件(续),建立连接 int index=();/大部分pop3服务器都加前缀pop3.,这里仅获取这种服务器/对不以pop3.为前缀的这个例子未进行处理 string pop3Server=pop3.+textBoxUser.Text.Substring(index+1);

13、,5.2 利用同步TCP接收电子邮件(续),/建立与POP3服务器的连接,使用默认端口110 tcpClient=new TcpClient(pop3Server,110);(与pop3服务器连接成功);/获取 Networkstream对象,以便通过建立好的连接发送和接收数据 networkStream=tcpClient.GetStream();/得到读对象,并查找字节顺序标记,防止显示乱码 sr=new StreamReader(networkStream);/得到写对象 sw=new StreamWriter(networkStream);/读取服务器回送的连接信息 if(ReadDa

14、taFromServer()=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(S

15、endDataToServer(LIST)=false)return;if(str=ReadDataFromServer()=null)return;从网络流中读取服务器回送的信息,写入信息列表框 string str=null;,5.2 利用同步TCP接收电子邮件(续),str=sr.ReadLine();(收到:+str);/如果是-ERR,表明有错 if(str0=-)MessageBox.Show(str,有错了);str=null;断开连接/向服务器发送QUIT命令 SendDataToServer(QUIT);sr.Close();sw.Close();networkStream.Close();tcpClient.Close();,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号