1第十三章SMTP与POP3协议开发13.1电子邮件的工作原理13.2简单邮件传输协议(SMTP)13.3邮件发送举例13.4POP3协议13.5邮件接收处理举例213.1电子邮件的工作原理电子邮件是一种存储转发式的服务,利用存储转发进行非实时的通信,属异步通信方式。电子邮件的管理是通过邮件服务器来实现的,它实际上是一个连接在通信网上的计算机系统。313.2简单邮件传输协议(SMTP)电子邮件的组成1.信封信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。2.首部(首部中常用字段格式见教材)3.正文正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。邮件以“.”结束。4与邮件服务器连接1.与SMTP服务器的连接使用命令格式:HELO信息发送端的名称格式举例:HELOLocal2.与ESMTP服务器建立连接(1)使用命令格式:EHLO信息发送端的名称格式举例:EHLOLocal(2)启动服务器认证命令格式:AUTHLOGIN3.断开与服务器的连接命令格式:QUIT使用QUIT命令退出系统,断开与服务器的连接。5邮件的发送过程以与ESMTP服务器建立连接发送邮件为例。1.客户端先与服务器建立连接1)客户端发送EHLOLocal2)客户端发送AUTHLOGIN3)客户端发送经过Base64编码处理的用户名4)客户端发送经过Base64编码处理的密码2.客户端开始发送邮件的信封5)客户端发送MAILFROM:发信人的地址6)客户端发送RCPTTO:收信人的地址63.客户端开始发送邮件数据7)客户端发送DATA8)客户端可以选择发送邮件的首部字段9)客户端发送一个空行表示邮件首部结束。10)客户端开始发送正文。11)客户端发送“.”表示邮件发送结束。4.客户端先服务器断开连接12)客户端发送QUIT表示断开连接。713.3邮件发送举例利用TcpClient类直接发送邮件1.建立一个Windows应用程序项目,设计窗体如图所示。窗体中主要控件属性见表13-1。82.添加名称空间引用。usingSystem.Net;usingSystem.Net.Sockets;usingSystem.IO;3.添加字段声明。TcpClientsmtpSrv;NetworkStreamnetStrm;stringCRLF=\r\n;94.书写代码。1)添加WriteStream方法。该方法通过连接向服务器输出字符串数据。2)添加AuthStream方法。该方法用于将普通字符串转换为等效的以64为基的字符串,即Base64编码形式。3)修改buttonSend_click()事件该事件用于发送邮件。5.运行该项目。运行界面如图13-2所示。10利用SmtpMail类发送邮件Microsoft在.NET中提供了SmtpMail类,它可以直接发送电子邮件,该类属于System.Web.Mail命名空间。发送举例privateMailMessagemailMessage=newMailMessage();mailMessage.To=收件人地址;mailMessage.From=发件人地址;mailMessage.Subject=主题;mailMessage.Body=邮件正文;SmtpMail.Send(mailMessage);或者SmtpMail.Send(发件人地址,收件人地址,主题,邮件正文);1113.4POP3协议POP(PostOfficeProtocol)协议,即邮局协议,用于电子邮件的接收,现在常用的是第三版,简称为POP3。具体介绍见教材。1213.5邮件接收处理举例本节以实例讲解邮件的接收处理过程。1.建立一个新的项目,设计窗体如图所示。窗体中主要控件属性见表13-3。132.在Form1.cs文件中增添名空间引用。usingSystem.Net;usingSystem.Net.Sockets;usingSystem.IO;声明变量publicTcpClientServer;publicNetworkStreamNetStrm;publicStreamReaderRdStrm;publicstringData;publicbyte[]szData;publicstringCRLF=\r\n;143.书写代码1)修改buttonCon_Click事件。该事件与服务器建立连接,读取总邮件数,并将邮件编号显示在列表框中。2)修改buttonDiscon_Click事件。该事件断开与服务器的连接。3)修改buttonRead_Click事件。读取制定的邮件内容,显示在文本框中。4)修改buttonDel_Click事件。该事件删除指定的邮件。4.运行。运行结果如图13-4所示。