第3章-电子邮件的发送和接收.ppt
- 文档编号:30846784
- 上传时间:2024-02-03
- 格式:PPT
- 页数:37
- 大小:690KB
第3章-电子邮件的发送和接收.ppt
《第3章-电子邮件的发送和接收.ppt》由会员分享,可在线阅读,更多相关《第3章-电子邮件的发送和接收.ppt(37页珍藏版)》请在冰豆网上搜索。
LOGO第3章电子邮件的发送和接收第3章电子邮件的发送和接收随着互联网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通讯工具。
本章主要介绍如何利用SMTP与POP3协议实现邮件的发送和接收。
3.1通过应用程序发送电子邮件不论是Windows应用程序还是Web应用程序,实现电子邮件的收发都是常用的功能,比如要求用户以邮件方式提供反馈信息;在办公系统中定时检测用户指定的邮件,并及时提醒用户查看等。
3.1.1SMTP协议电子邮件是通过SMTP服务器进行发送的,SMTP是英文SimpleMailTransferProtocol的缩写,意为简单邮件传输协议,默认端口为25。
使用SMTP协议发送邮件时,有两种形式,一种是不使用客户端认证,即客户端可以使用匿名方式发送邮件,这种方式即是一般的SMTP协议;另一种要求客户端必须提供用户名密码,这种方式称为ESMTP协议,即ExtendedSMTP,或者叫扩展SMTP。
ESMTP与SMTP的区别除了是否需要认证以外,其他均相同。
客户端发送电子邮件过程是:
先通过客户端软件将邮件发送到SMTP邮件服务器,然后再由SMTP邮件服务器发送到目标SMTP邮件服务器。
为了避免或者减少垃圾邮件,目前大部分SMTP邮件服务器一般均采用用户名密码认证的方式。
在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。
1)信封:
信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。
MAILFROM:
,告诉SMTP服务器发信人的地址。
RCPTTO:
,告诉SMTP服务器收信人的地址。
2)首部首部中常用命令:
FROM:
,表明邮件发送者是谁。
TO:
,表明邮件接收者是谁。
SUBJECT:
,表明邮件的主题。
DATE:
,表明发邮件的时间。
REPLY-TO:
,表明邮件的回复地址。
Content-Type:
,表明邮件包含文本、HTML超文本和附件的哪些类型。
X-Priority:
,表明邮件的发送优先级。
MIME-Version:
,MIME的意思是MultipurposeInternetMailExtensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。
3)正文:
正文是邮件的内容。
首部以一个空行结束,再下面就是正文部分。
4)结束符号:
邮件以“.”结束。
3.1.2发送邮件从SMTP协议的介绍可以看出,发送和接收邮件的内部实现过程还是比较复杂的,如果全部从底层进行编程,需要的代码就比较多。
因此在.NET框架2.0的System.Net.Mail命名空间中提供了专门对邮件进行处理的类,从而使邮件的发送变得非常简单。
对于运行在没有专用邮件服务器的大多数客户程序而言,向SMTP服务器发送邮件需要提供用户名和密码,服务器验证成功后,才能进行发送或接收。
因此在应用程序中发送邮件,需要使用下面几个类:
1)System.Net命名空间下的NetworkCredential类该类用于提供客户端身份验证机制的凭据。
其中包括标准Internet身份验证方法(基本、简要、协商、NTLM和Kerberos身份验证)以及可以创建的自定义方法。
在邮件发送中,我们需要使用这个类提供SMTP服务器需要的用户名和密码,用法为:
NetworkCredentialmyCredentials=newNetworkCredential(发件人邮件地址,密码);2)System.Net.Mail命名空间下的MailAddress类该类用于提供发件人和收件人的邮件地址,常用形式为:
MailAddressfrom=newMailAddress(发件人邮件地址);MailAddressto=newMailAddress(收件人邮件地址);3)System.Net.Mail命名空间下的MailMessage类该类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用属性如下:
Attachments该属性用于指定随电子邮件一起传送的附件集合Bcc该属性用于获取或设置以分号分隔的电子邮件地址列表,这些地址接受电子邮件的匿名副本(BCC)Body该属性用于获取或设置电子邮件的正文BodyEncoding该属性用于获取或设置电子邮件正文的编码类型BodyEncoding该属性用于获取或设置电子邮件正文的编码类型BodyFormat该属性用于获取或设置电子邮件正文的内容类型Cc该属性用于获取或设置以分号分隔的电子邮件地址列表,这些地址接受电子邮件的抄送副本(CC)From该属性用于获取或设置发件人的电子邮件地址Headers该属性用于指定随电子邮件一起传输的自定义标头Priority该属性用于获取或设置电子邮件的优先级Subject该属性用于获取或设置电子邮件的主题行To该属性用于获取或设置以分号分隔的收件人电子邮件地址列表UrlContentBase该属性用于获取或设置Content-BaseHTTP标头,即在HTML编码的电子邮件正文中使用的所有相对URL的URL基UrlContentLocation该属性用于获取或设置电子邮件的Content常用形式为:
MailMessagemessage=newMailMessage(from,to);message.Subject=主题;message.SubjectEncoding=System.Text.Encoding.UTF8;message.Headers.Add(“Date”,DateTime.Now.Tostring();message.Priority=MailProiority.High;message.Body=邮件内容;message.BodyEncoding=System.Text.Encoding.UTF8;4)System.Net.Mail命名空间下的Attachment类该类用于提供附件对象,常用形式为:
AttachmentattachFile=newAttachment(文件名);message.Attachments.Add(attachFile);5)SmtpClient类该类用于发送邮件,常用形式为:
SmtpClientclient=newSmtpClient(邮件服务器地址);client.Send(message);方法说明SmtpClient()使用配置文件设置初始化SmtpClient类的新实例。
SmtpClient(String)初始化SmtpClient类的新实例,让其使用指定的SMTP服务器发送电子邮件。
SmtpClient(String,Int32)初始化SmtpClient类的新实例,让其使用指定的SMTP服务器和端口发送电子邮件。
【例1】设计一个Windows应用程序,实现发送邮件的功能。
要求利用正则表达式验证用户输入的信息,当输入信息符合要求时,才允许将邮件发送到邮件服务器。
3.2利用同步TCP接收电子邮件与发送电子邮件不同,接收电子邮件主要是利用POP(PostOfficeProtocol)协议,现在常用的是第三版,简称为POP3,默认端口为110。
通过POP3协议,客户机登录到服务器后,可以对自己的邮件进行删除或下载,下载后,电子邮件客户端软件就可以在本地对邮件进行处理,随Windows操作系统一块安装的OutlookExpress就是这种工作方式。
实际上,收发邮件使用了两种协议,一种是TCP协议,用于收发数据;另一种是POP3协议,用于解析传送的命令。
3.2.1POP3工作原理凡是提供邮件服务的系统,除了有SMTP服务器外,还有POP3服务器。
这两个服务器可能是同一台计算机,也可能是两台计算机。
POP3邮件服务器通过侦听TCP端口110提供POP3服务。
客户端软件读取邮件之前,需要事先与服务器建立TCP连接。
连接成功后,POP3服务器会向该客户端发送确认消息。
然后客户端根据服务器回送的信息决定下一步的操作。
客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。
这个过程经历了三个状态:
授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。
在POP3协议中,规定的命令只有十几条。
每条命令均由命令和参数两大部分组成,而且每条命令都以回车换行结束。
命令和参数之间由空格间隔。
命令部分由三到四个字母组成,参数部分可达40个字符长度。
POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。
所有响应也以回车换行结束。
状态码有两种:
“确定”(“+OK”)和“失败”(“-ERR”)。
对于客户端发送的每一条命令,服务器都会回送状态码。
因此在客户端程序中,可以通过服务器回送的状态码对应的字符,即判断第一个字符是“+”号还是“-”号来确定服务器是否正确响应客户端发送的命令。
1.授权状态客户端首先与POP3服务器建立TCP连接,服务器接收后发送一个单行的确认信息。
例如“+OKPOP3serverready”,此时POP3会话就进入了授权状态。
在授权状态,客户需要向服务器发送用户名和密码进行确认。
假设用C表示客户端(Client),S表示服务器端(Server),下面是客户端接收邮件前需要与服务器传输的信息。
1)发送用户名。
语法形式:
USER功能:
将客户的用户名发送到服务器。
服务器返回:
+OK正确的用户名;-ERR错误的用户名。
示例:
C:
USERS:
+OKwelcomeonthisserver.上述两行代码的含义为:
客户端发送“USER”,服务器端回送信息“+OKwelcomeonthisserver.”。
2)用户名确认成功后,需要输入密码。
语法形式:
PASS功能:
将客户的密码发送给服务器。
服务器返回:
+OK正确的用户名;-OK错误的用户名。
示例:
C:
PASS*S:
+OKmynameloggedinat19:
04授权成功后,进入操作状态。
2.操作状态客户端向服务器成功确认了自己的身份后,POP3会话将进入操作状态,客户就可以执行POP3命令进行相应的操作。
对于每个命令,服务器都会返回应答信息。
下面是在操作状态中使用的命令。
(1)STAT命令语法形式:
STAT功能:
从服务器中获取邮件总数和总字节数。
服务器返回:
邮件总数和总字节数。
示例:
C:
STATS:
+OK2320
(2)LIST命令语法形式:
LIST功能:
从服务中获得邮件列表和大小。
服务器返回:
列出邮件列表和大小。
示例:
C:
LISTS:
+OK2messages(320octets)S:
1120S:
2200S:
.(3)RETR命令语法形式:
RETR功能:
从服务器中获得一个邮件。
服务器返回:
+OK成功;-ERR错误。
示例:
C:
RETR1S:
+OK120octetsS:
S:
.注意,这里的“.”是单独发送的。
(4)DELE命令语法形式:
DELE功能:
服务器将邮件标记为删除,当执行QUIT命令时才真正删除。
服务器返回:
+OK成功;-ERR错误。
示例:
C:
DELE1S:
+OK1Deleted当客户发送QUIT命令时,会话进入更新状态。
3.更新状态当客户在操作状态下发送QUIT命令后,会话进入更新状态。
QUIT命令语法形式:
QUIT功能:
关闭与服务器的连接。
服务器返回:
+OK;-ERR。
示例:
C:
QUITS:
+OK然后服务器自动断开与该客户端的TCP连接。
【例2】利用POP3协议和同步TCP编写一个简单的邮件接收客户端程序。
图5-2例5-2的设计界面textBoxPasswordtextBoxUserrichTextBox1WordWrap:
FalsebuttonConnectbuttonDisconnectgroupBoxOperationbuttonReadbuttonDeletelistBoxOperation
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子邮件 发送 接收