,进而了解MIME 协议和邮件中的编码问题。
4.2 电子邮件相关协议及其Java 解决
SMTP 协议:这是"简单邮件传输协议",最初互联网上的电子邮件就是通过这个协议在不同主机上传播的。此协议只支持传输7bit 的字节流(每个字节的最高位将被强制转换为0),这就决定了SMTP 协议只能传输简单的ASCII 字符集的纯文本英文邮件。POP3 协议:虽然SMTP 协议支持了邮件的收发,但并不是每个人都能够有机器长时间做SMTP 服务器。这样就很多人共用一台SMTP 服务器,POP3 协议正是这种情况下支持用户从自己的SMTP 服务器上拿到自己邮件的协议。
MIME 协议:MIME 是"多用途互联网邮件扩展"的简称。由于SMTP 协议只能收发纯文本方式的英文邮件极大的影响了邮件的可用性,人们就用MIME 协议将复杂形式的邮件内容组织成为符合SMTP 协议要求的形式,然后通过已有的SMTP 协议进行邮件传输。要想正确还原从POP3 服务器上取得的Message,就要深入了解MIME协议内容。MIME 协议主要解决两个问题,一是如何将非ASCII 码的字节流(非英文文本或二进制文件)转换成为SMTP 服务器可以接受的7bit 字节流;二是如何在邮件中组织正文及附件等多个部分。此小节我们重点讨论如何组织正文及附件等多个部分。图2 就是一个MIME 邮件的例子,其中Header 部分的意义非常明显,这里不再介绍。Body 部分我们发现是以树形结构组织的,其中根节点类型说明(Content-Type)为"多部分混合"(multipart/mixed),并且各部分用边界(boundary)分隔。同样每个子节点也可以再有自己的子节点,从而形成了一个树形的文档结构,其中每一个叶节点就是一个文本正文、超文本正文或是邮件附件。用JavaMail 获取到一个Message 的输入流后,应该如何处理呢?图3 给出了JavaMail 中与MIME 邮件相关的类之间的关系。显然,邮件Body 部分中包含子节点的部分为Multipart 类的实例,而其中的叶节点就是BodyPart 类的实例。那么,我们首先用输入流构造一个Message 对象判断其是不是叶节点,然后分情况构造BodyPart或Multipart,如果是Multipart 则递归分解,直到分解到叶节点。图4 给出了对含有子节点的部分的解析代码。
当得到叶节点(文本正文、超文本正文或附件)后,就可以将其读出并存成文件,以便用户通过WEB 访问到该正文或附件。对于多部分的邮件,解析时应该保存其结构信息,这样JSP 就可以通过此信息组织呈现给用户的WEB 页面。比如有附件的邮件,就可以创建分FRAME 的网页,分开显示邮件正文和附件列表;而无附件的邮件就不必创建FRAME 网页。
4.3 字符编码及字符集转换问题
前面提到MIME要解决的另外一个问题就是将SMTP协议不支持的字节流转换成为SMTP 协议支持的字节流。比如我们要通过邮件传输一个附件文档,该附件文档就是一个8bit 字节流,如果简单的直接通过SMTP 发送,其最高位信息将被丢失。MIME规定可以用两种编码方式将8bit 的字节流编码成为低于8bit 的字节流,它们分别是BASE64 编码(BASE64 将8bit 字节流编码成6bit 字节流)和QP 编码。这两种编码方式同样应用在对中文的编码上。例如如果邮件中文题目叫做"CVS 介绍",那么其编码后的形式可能为: Subject:=?gb2312?B?Q1ZTLS3QpMX0LnBwdA==?=标题字符串以"=?"开始,以"?="结束。"gb2312"表示字符串的字符集,而以"?"分隔的"B"就表示此字符串的编码方式为BASE64。我们处理此标题时就要先将BASE64编码的6bit 字节流转换为原来的8bit 字节流,再根据字符集"gb2312"转换为Java 中的String 类型。这里可以简单的使用JavaMail 提供的MimeUtility.decodeWord()静态方法将编码后的字符串解码。
第五章 使用JSP开发邮件系统
在动态网站的制作中经常需要开发邮件系统,用户在访问网站时使用其邮件系统可以很方便的收发电子邮件。互联网上的许多门户网站都提供了自己的邮件系统,著名的如网易163电子邮局、搜狐的电子邮件系统,还有专门的电子邮件服务系统HOTMAIL等等,都为用户提供了强大的邮件服务功能。
SUN公司发布的JAVAMAIL API提供了用于构建电子邮件系统的开发包,它实现了用于传输电子邮件的一些流行的协议,并且提供了方便的使用方法。在JSP中只需要调用JAVAMAIL开发包中的API就可以很方便的实现电子邮件的收发以及其他诸多功能。
5.1 搭建开发环境
本节主要介绍JSP开发环境的搭建。首先介绍该邮件系统对运行环境的要求,接着讲述JSP开发。
5.1.1 该系统运行环境
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:
(1)软件环境
客户端: Windows95/98,Windows 2000/xp,Internet Explorer(IE)等
服务器端: Windows2000 Server (IIS)4.0及其以上版本,IE等
数据库:采用SQL,运行于服务器端。
(2)硬件环境
服务器 CPU:PIII 500以上 ,内存:256M以上
客户机 CPU:P200MMX以上,内存:32M以上
5.1.2 安装和配置JDK
(1)JDK的安装
①可先到java.sun/j2se/downloads.html下载j2sdk-1_4_1-win.exe。
② 自动解压后出现出现确认安装界面,在此界面中单击【NEXT】按钮。
③ 出现版权协议说明界面,单击【YES】按钮,接受版权协议后,选择安装路径,
如C:\j2sdk1.4.2_05,然后单击【OK】按扭。
④ 出现安装组件的界面,直接单击【NEXT】按钮继续安装。
⑤ 选择一种浏览器,能在此浏览器中运行Applet,然后单击【NEXT】。
⑥ 对JDK进行按装,安装完毕,单击【Finish】结束安装。
(2)JDK的配置
安装好JDK后,还需要在环境变量中进行相应的配置。如下:
① 在桌面上单击"我的电脑"属性,依次选择【属性】/【高级】/【环境变量】选项。
② 新建一个环境变量,名为JAVA_HOME,值为C:\j2sdk1.4.2_05,如图5.1所示:
图5.1JDK配置
③ 单击【确定】按钮。
④ 用同样的方法设置其他环境变量:"Path=C:\j2sdk1.4.2_05\bin";"CLASSPATH=.;"。
5.1.3 安装和配置Tomcat
Tomcat服务器是当今使用广泛的Servlet/JSP服务器,它运行稳定,性能可靠,本节介绍Tomcat的安装、配置与使用,并做对应的测试。
(1)安装Tomcat
① 可以从jakarta.apache.org/tomcat下载Tomcat 5.0 Servlet服务器,下载后单击安装。
② 在弹出的窗口中单击【NEXT】按钮。
③ 出现授权界面,单击【I Agree】按钮。
④ 在弹出的界面中选择安装组件,可以选择"full",然后单击【NEXT】按钮。
⑤ 选择安装目录然后单击【NEXT】按钮。
⑥ 配置Tomcat,默认断口8080,输入一个密码,本系统设置为"admin"。注意:必须记住这个密码。然后单击【NEXT】按钮,如图5.2所示:
图5.2 Tomcat密码设置
⑦ 选择JDK的安装位置,如C:\j2sdk1.4.2_05,然后单击【NEXT】按钮。
⑧ 单击【Install】按钮。
⑨ 安装完成后单击【Finish】按钮。
(2)Tomcat的配置
安装好Tomcat后,还需要在环境变量中进行相应的配置。如下:
① 在桌面上单击"我的电脑"属性,依次选择【属性】/【高级】/【环境变量】选。
② 新建一个环境变量,名为CATALINA_HOME,值为C:\Program Files\Apache Software Foundation\Tomcat 5.3,如图7所示:
图5.3Tomcat环境变量配置
③ 单击【确定】按钮,Tomcat配置完成。
5.1.4 测试是否安装配置成功
执行C:\Program Files\Apache Software Foundation\Tomc
上一篇:
基于JSP的高校教师职称评审量化打分系统_论文定稿