140 likes | 316 Views
第十三章 SMTP 与 POP3 协议开发. 13.1 电子邮件的工作原理 13.2 简单邮件传输协议( SMTP ) 13.3 邮件发送举例 13.4 POP3 协议 13.5 邮件接收处理举例. 13.1 电子邮件的工作原理. 电子邮件是一种存储转发式的服务,利用存储转发进行非实时的通信,属异步通信方式。 电子邮件的管理是通过邮件服务器来实现的,它实际上是一个连接在通信网上的计算机系统。. 13.2 简单邮件传输协议( SMTP ). 电子邮件的组成 1. 信封
E N D
第十三章 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="\r\n";
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 = "\r\n";
3. 书写代码 1)修改buttonCon_Click事件。 该事件与服务器建立连接,读取总邮件数,并将邮件编号显示在列表框中。 2)修改buttonDiscon_Click事件。 该事件断开与服务器的连接。 3)修改buttonRead_Click事件。 读取制定的邮件内容,显示在文本框中。 4)修改buttonDel_Click事件。 该事件删除指定的邮件。 4. 运行。 运行结果如图13-4所示。