教学进度计算机科学与工程系9.1电子邮件协议概述9.2SMTP协议编程9.3ESMTP协议编程9.4POP3协议编程9.5电子邮件的.NET模块9.6其他相关第九章电子邮件协议编程教学进度计算机科学与工程系1987年,中国第一封电子邮件:“越过长城,走向世界”第九章电子邮件协议编程教学进度计算机科学与工程系9.1电子邮件协议概述9.1.1电子邮件系统组成电子邮件系统包括邮件服务器和邮件客户端;邮件服务器又包括邮件发送处理服务器(遵循SMTP)和邮件接收处理服务器(遵循POP3协议)。一般的邮件服务器(126、21cn、Hotmail等)都包括这两个功能。教学进度计算机科学与工程系9.1.1电子邮件系统组成邮件服务器:发送服务器,接收服务器9.1电子邮件协议概述2,邮件接收服务器,POP3服务器;pop3.21cn.compop3.scau.edu.cnpop3.gmail.com1,邮件发送服务器,SMTP服务器;smtp.21cn.comsmtp.scau.edu.cnsmtp.gmail.com教学进度计算机科学与工程系邮件客户端功能:发送邮件,接收邮件;9.1.1电子邮件系统组成邮件客户端程序:MicrosoftOutlook;FoxMail;9.1电子邮件协议概述邮件客户端程序的其他功能:在线/离线;邮件导出功能;教学进度计算机科学与工程系9.1.1电子邮件系统组成Question:一封邮件的发件人和收件人如下:发件人:scaucs@126.com收件人:scaulhx@gmail.com则发送邮件时连接的服务器是:A:smtp.126.comB:smtp.gmail.com9.1电子邮件协议概述教学进度计算机科学与工程系1,RFC822邮件格式,RequestForComment信封和邮件内容9.1.2电子邮件协议2,SMTP,简单邮件传输协议用于提交和传送电子邮件3,POP3,邮局协议第三版信息存储,邮件下载4,IMAP4,网际消息访问协议第四版9.1电子邮件协议概述教学进度计算机科学与工程系9.2SMTP协议编程SMTP(SimpleMailTransferProtocol),简单邮件传输协议主要功能:用于提交和传送电子邮件说明:SMTP服务器会主动监听TCP端口25,邮件客户端如果需要发送邮件,首先要建立一个TCP连接。当连接建立后,SMTP协议中规定命令并等待响应。教学进度计算机科学与工程系9.2SMTP协议编程9.2.1邮件格式邮件组成:信封、首部、正文1,邮件信封MAILFROM:HuaJinjgjinhua@163.comRCPTTO:JinHuanthuajin@163.com教学进度计算机科学与工程系9.2.1邮件格式-2,邮件首部9.2SMTP协议编程Received:bysmtp.mail.163.com;Thu,10July200913:10:25+0800Message-ID:0c6501b1452a$3d4c8ef0$67d025fc@163.comFrom:HuaJinjgjinhua@163.comDate:Thu,10July200813:10:25+0800Reply-To:JinHuanthuajin@163.comTo:nthuajin@163.comSubject:c#NetworkProgrammingX-Mailer:MicrosoftOutlookExpress5.50.4133.2400教学进度计算机科学与工程系From:发件人帐号HuaJinjgjinhua@163.com9.2.1邮件格式-2,邮件首部说明To:收件人帐号,多个帐号的表达HuaJinjgjinhua@163.com,HuaJinjgjinhua@126.comcc:抄送,收件人帐号HuaJinjgjinhua@163.comBcc:暗送,收件人帐号HuaJinjgjinhua@163.com9.2SMTP协议编程教学进度计算机科学与工程系3,邮件正文根据RFC822的定义,邮件内容以ASCII为其文字格式。(1)保留字(2)符号(:,”,@,CRLF)9.2.1邮件格式9.2SMTP协议编程教学进度计算机科学与工程系9.2.2SMTP信息C:Tryingtoconnecttohostsmtp:mail.163.com,port:25C:Connectedtosmtp:mail.163.comS:220smtp:mail.163.comSimpleMailTransferServiceReadyC:Helosmtp:mail.163.comS:250Hellosmtp:mail.163.comC:MAILFROM:scaulhx@163.comS:250OKC:RCPTTO:XXXX@163.comS:250OK发送邮件时,客户端与服务端响应代码示例:9.2SMTP协议编程教学进度计算机科学与工程系C:DATAS:354Startmailinput;endwithCRLF.CRLFC:Date:Thu,10Nov200915:20:25+0800C:From:scaulhx@163.comC:To:xxxx@163.comC:Subject:SMTPMailC:.S:250OKC:QUITS:221smtp:mail.163.comServiceclosingtransmissionchannel发送邮件时,客户端与服务端响应代码示例(续):9.2.2SMTP信息9.2SMTP协议编程教学进度计算机科学与工程系9.2.2SMTP信息SMTP响应码响应码含义211响应系统状态354开始邮件发送内容,以.结束450邮件信箱不存在551无此收件人552系统容量不足……9.2SMTP协议编程教学进度计算机科学与工程系9.2.3SMTP指令命令描述HELO向服务器标识用户身份MAIL初始化邮件传输RCPT标识邮件接收人DATA初始化数据传输RSET中止邮件发送处理SEND处理邮件发送QUIT结束会话……9.2SMTP协议编程教学进度计算机科学与工程系9.2.4SMTP流程Connection(Port25)客户端EMAIL服务器250OKheloMailServer220SmtpServerReadyMailFROM:RcptTO:DATA250OK250OK354Startmailinput传送邮件标题传送邮件内容传送邮件结尾221OKQUIT250OK9.2SMTP协议编程教学进度计算机科学与工程系9.2.4SMTP流程-发送邮件流程图9.2SMTP协议编程客户端发送邮件流程:1,连接服务器;2,身份验证;3,发送邮件教学进度计算机科学与工程系9.2.5SMTP协议编程方法9.2SMTP协议编程HELOMailServer\r\nMAILFROM:发件人电子邮件地址\r\nRCPTTO:收件人电子邮件地址\r\nDATA\r\n邮件标题及内容\r\n\r\n.\r\nQUIT\r\n教学进度计算机科学与工程系9.3ESMTP协议编程ESMTP(ExtendedSMTP),扩展SMTP主要区别:要求用户身份验证的SMTP说明:用ESMTP服务器发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与SMTP一样。教学进度计算机科学与工程系9.3ESMTP协议编程协议编程实例-基于Socket的实现教学进度计算机科学与工程系9.4.1POP3协议概述9.4POP3协议编程POP3(PostOfficeProtocol3),邮件接收协议默认端口:110主要功能:接收邮件。定义了接收邮件的流程、指令等相关内容。教学进度计算机科学与工程系9.4POP3协议编程9.4.1POP3协议概述POP3流程分为如下3个阶段:(1)授权阶段(认证)。(2)操作阶段(邮件接收)。(3)更新阶段(更新邮件信箱,根据Transaction流程的定义)。教学进度计算机科学与工程系9.4.1POP3流程-接收邮件流程图客户端接收邮件流程:1,连接服务器;2,登陆服务器;3,接收邮件9.4POP3协议编程教学进度计算机科学与工程系9.4.1POP3协议概述9.4POP3协议编程1,客户端所发送的指令必须以CRLF结尾。2,服务器端响应的信息,只有两种情况。+OK:表示指令执行正确。−ERR:表示指令执行错误。教学进度计算机科学与工程系9.4.1POP3协议概述9.4POP3协议编程阶段指令语法1,认证USERUSERloginnamePASSPASSpasswordQUITQUIT2,邮件发送STATSTATLISTLIST(mail#)RETRRETRmail#DELEDELENOOPNOOPRSETRSET教学进度计算机科学与工程系9.4.2POP3协议编程9.4POP3协议编程协议编程实例-基于Socket的实现教学进度计算机科学与工程系9.5邮件的.NET模块1、使用outLook提供的发送;2、WEB开发,在ASP.Net中引用System.Net.Mail类(.NET1.x为System.Web.Mail);3、在C#开发Windows应用程序中使用System.Net.Sockets;4、IISSMTP自带的基本的发信组件CDONTS;5、使用JMail组件;.NET下邮件编程的几种实现方法:教学进度计算机科学与工程系9.5邮件的.NET模块9.5.1System.Net.MailSystem.Net.Mail命名空间提供处理E-Mail协议的相关类,包含以下成员:1,SmtpClient类,客户端2,Attachment类,附件3,MailAddress类,邮件地址4,MailMessage类,邮件信息5,MailPriority枚举类型,优先级教学进度计算机科学与工程系9.5.2设置邮件-1,服务器及E-Mail地址SmtpClientclient=newSmtpClient();client.Host=“smtp.mail.163.com”;client.UseDefaultCredentials=false;client.Credentials=newNetworkCredential(user,password);client.DeliveryMethod=SmtpDeliveryMethod.Network;MailMessagemailMsg=newMailMessage();mailMsg.From=newMailAddress(“scau@163.com”);mailMsg.To=newMailAddress(“scaucs@163.com”);9.5邮件的.NET模块教学进度计算机科学与工程系9.5.2设置邮件-2,邮件内容及附件stringmailBody;mailMsg.Subject=“邮件测试”;mailMsg.SubjectEncoding=System.Text.Encoding.UTF8;mailMsg.Body=mailBody;mailMsg.isBodyHtml=false;mailMsg.BodyEncoding=System.Text.Encoding.UTF8;MailAttachmailAttach=newMailAttach(“c:\mail.txt”);mailMsg.Attachments.Add(mailAttach);9.5邮件的.NET模块教学进度计算机科学与工程系9.5.3发送邮件…mailMsg.Priority=MailPriority.High;…SmtpClient.Send(mailMsg);//同步SmtpClient.SendAsync(mailMsg,object);//异步9.5邮件的.NET模块教学进度计算机科学与工程系9.5.4发送邮件9.5邮件的.NET模块协议编程实例-基于.NET的实现教学进度计算机科学与工程系9.6其他相关-1,IMAP4协议(