邮件的发送和接收.ppt
《邮件的发送和接收.ppt》由会员分享,可在线阅读,更多相关《邮件的发送和接收.ppt(106页珍藏版)》请在三一办公上搜索。
1、An Introduction to Database System,第13章 电子邮件的发送和接收,电子邮件(electronic mail,简称e-mail)是因特网上使用最多的一种应用,它为用户在因特网上设立了存放邮件的电子邮箱,发信人可以随时将电子邮件发送到收信人的电子邮箱,收信人也可以随时上网读取,发信人与收信人以异步的方式通信。,Network Programming,An Introduction to Database System,第13章 电子邮件的发送和接收,邮件传输原理 1、电子邮件系统的构成一个电子邮件系统包括三个主要的构件,即用户代理,邮件消息传输代理(邮件服务器)
2、,和电子邮件使用的协议。如图所示:,Network Programming,An Introduction to Database System,第13章 电子邮件的发送和接收,2、电子邮件系统的实现,Network Programming,An Introduction to Database System,13.1 E-mail协议简介,邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器;接收邮件服务器使用接收邮件协议,常用的有POP3协议
3、和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。,Network Programming,An Introduction to Database System,13.1.1SMTP协议简介,SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。SMTP协议由于非常简单,使得它得到
4、了广泛的运用,在Internet上能够发送邮件的服务器几乎都支持SMTP协议。,Network Programming,An Introduction to Database System,13.1 E-mail协议简介,Network Programming,An Introduction to Database System,13.1.1SMTP协议简介,SMTP协议采用C/S模式,专用于电子邮件的发送,规定了发信人把邮件发送到收信人的电子邮箱的全过程中,SMTP客户与SMTP服务器这两个相互通信的进程之间应如何交换信息。即规定了SMTP的会话过程。用户直接使用的是用于编写和发送的客户端软
5、件,而通常的SMTP服务器运行在远程站点上。客户/服务器之间的通信是通过TCP/IP协议进行的。SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体如下:,Network Programming,An Introduction to Database System,13.1.1SMTP协议简介,具体为:(1)建立TCP连接。(2)客户端向服务器发送HELLO命令以标识发件人自己的身份,然后客户端发送MAIL命令。(3)服务器端以OK作为响应,表示准
6、备接收。(4)客户端发送RCPT命令。(说明收信人的电子邮件地址)(5)服务器端表示是否愿意为收件人接收邮件。(6)协商结束,发送邮件,用命令DATA发送输入内容。(7)结束此次发送,用QUIT命令退出。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。,Network Programming,An Introduction to Database System,13.1.2 POP3协议简介,POP3(Post Office Protocol 3)即邮局协议的第3个
7、版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。,Network Programming,An Introduction to Database System,13.1.3 IMAP协议简介,Internet
8、 Mail Access Protocol互联网邮件访问协议。IMAP协议它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱,它除了支持POP3协议的脱机操作模式外,还支持联机操作和断连接操作。它为用户提供了有选择的从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。,Network Program
9、ming,An Introduction to Database System,13.1.4 MIME简介,MIME(Multipurpose Internet Mail Extensions,多用途Internet邮件扩充标准)不是邮件传输协议,而是对邮件格式所作的规范。它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。MIME规定了用于表示各种各样的数据类型的符号化方法。MIME是通过标准化电子邮件报文的头部的附加领域(fields)而实现的;这些头部的附加领域,描述新的报文类型的内容和组织形式。,Network Programming,An Intr
10、oduction to Database System,13.1.4 MIME简介,Network Programming,An Introduction to Database System,13.1.4 MIME简介,内容类型(Content-Type),这个头部领域用于指定消息的类型type有下面的形式。Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;Application:用于传输应用程序数据或者二进制数据;Message:用于包装一个E-mail消息;Image:用
11、于传输静态图片数据;Audio:用于传输音频或者音声数据;Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,SUN公司制定了JavaMail API,它封装了按照各种邮件通信协议,如IMAP、POP3和SMTP,与邮件服务器通信的细节,为Java应用程序提供了收发电子邮件的公共接口,参见图,Network Programming,An Introduction to Database System,13.2 JavaMai
12、l API简介,JavaMail API主要位于javax.mail包和中,图为其中主要类的类框图。,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,1.类:表示邮件会话,是JavaMail API的最高层入口类。Session类定义了基本的邮件会话。就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。Session类的构造方法是私有的,所以我们可以使用Session类提供的getDe
13、faultInstance()这个静态工厂方法获得一个默认的Session对象:Properties props=new Properties();Session session=Session.getDefaultInstance(props,null);,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,2、类:表示接收邮件服务器上的注册用户的存储空间,通过Store类的getFolder()方法,可以访问用户的特定邮件夹。通过javax.mail.Store类可以访问javax.mail.
14、Folder类。我们需要从Session中获取特定类型的Store,然后连接到 Store,在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。Store store=session.getStore(imap);Store store=session.getStore(pop3);store.connect(host,username,password);,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,3、javax.mail.Folder类代表邮件夹,邮
15、件都放在邮件夹中,Folder提供了管理邮件夹及邮件的各种方法在连接到Store后,一个Folder对象即目录对象将通过Store的getFolder()方法被返回,我们可从这个Folder中读取邮件信息:Folder folder=store.getFolder(INBOX);folder.open(Folder.READ_ONLY);,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,4、javax.mail.Message类代表电子邮件,封装了实际email消息的所有细节,如标题、发送/接
16、收地址、发送日期等,提供了读取和设置邮件内容的方法。Message是一 个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的 邮箱信息。为了建立一个MimeMessage对象,我们必须将Session对象作为MimeMessage构造方法的参数传入:MimeMessage message=new MimeMessage(session);message.setFrom(new InternetAddress(from);message.addRecipient(Message.RecipientType
17、.TO,new InternetAddress(to);message.setSubject(Hello JavaMail);message.setText(Welcome to JavaMail);,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,5、javax.mail.Address类:邮件地址类,像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。通过传入代表邮件地址的字符串,我们可以建立一
18、个邮件地址类:Address address=new InternetAddress(presidentwhitehouse.gov);,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,6、javax.mail.Transport类:在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息。Transport transport=session.getTransport(smtp);trans
19、port.connect(host,username,password);transport.sendMessage(message,message.getAllRecipients();transport.close();,Network Programming,An Introduction to Database System,13.2 JavaMail API简介,7、javax.mail.Authenticator类:像 类那样,JavaMail API通过使用授权者类(Authenticator是一个抽象类)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器
20、。下面代码片断中的MyAuthenticator就是一个Authenticator的子类。Properties props=new Properties();Authenticator auth=new MyAuthenticator();Session session=Session.getDefaultInstance(props,auth);,Network Programming,An Introduction to Database System,13.3 建立JavaMail应用程序的开发环境,JDK中并不包含JavaMail API。为了开发JavaMail应用程序,需要从SUN
21、公司的网站下载JavaMail API及其实现的类库,该类库由两个JAR文件组成:mail.jar和activation.jar。,Network Programming,An Introduction to Database System,13.3 建立JavaMail应用程序的开发环境,1安装JavaMail为了使用JavaMail API,需要从http:/安装了JavaMail之后,我们还需要安装JavaBeans Activation Framework,因为这个框架是JavaMail API所需要的。如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2
22、EE.jar中,只需将J2EE.jar加入到 CLASSPATH即可,Network Programming,An Introduction to Database System,13.3 建立JavaMail应用程序的开发环境,2安装JavaBeans Activation Framework从http:/载JavaBeans Activation Framework,并将其添加到CLASSPATH中。此框架增加了对任何数据块的分类、以及对它们的处理的特性。这些特性是JavaMail API需要的。虽然听起来这些特性非常模糊,但是它对于我们的JavaMail API来说只是提供了基本的MIM
23、E类型支持。到此为止,我们应当把mail.jar和activation.jar都添加到了CLASSPATH中。当然如果从方便的角度讲,直接把这两个Jar文件复制到JRE目录的lib/ext目录中也可以。,Network Programming,An Introduction to Database System,13.4 创建JavaMail应用程序,JavaMail应用程序在初始化过程中需要执行如下步骤。步骤(1)设置JavaMail属性:Properties props=new Properties();”,“smtp”);/指定邮件发送协议,imap);/指定邮件接收协议,);/指定支持
24、SMTP协议的Transport具体类,允许由第三方提供。,);/指定支持IMAP协议的Store具体类,允许由第三方提供。,hostname);/指定采用SMTP协议的邮件发送服务器的IP地址或主机名。,Network Programming,An Introduction to Database System,13.4 创建JavaMail应用程序,步骤(2)调用类的静态方法Session.getDefaultInstance()获得Session实例,该方法根据已经配置的JavaMail属性来创建Session实例:Session mailsession=Session.getDefau
25、ltInstance(props);步骤(3)调用Session的getStore(String protocol)方法来获得Store对象,参数protocol指定接收邮件协议:Store store=mailsession.getStore(imap);步骤(1)把属性设为,因此以上getStore()方法返回类的实例。,Network Programming,An Introduction to Database System,13.4 创建JavaMail应用程序,步骤(4)调用Store对象的connect()方法连接到接收邮件服务器。调用connect()方法时,应该指定接收邮件服
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 邮件 发送 接收
链接地址:https://www.31ppt.com/p-5859871.html