没有合适的资源?快使用搜索试试~ 我知道了~
java邮件系统设计-学位论文.doc
0 下载量 52 浏览量
2023-07-11
02:16:29
上传
评论
收藏 1.2MB DOC 举报
温馨提示
试读
67页
java邮件系统设计-学位论文.doc
资源推荐
资源详情
资源评论
1
1
成员
负责模块
李进(组长)
邮件服务器管理模块、邮件管理之邮件发送模块,其他模块有参与
马昌
修改用户信息模块,其他模块有参与
高宁
邮件管理模块(重要)
何骥越
登录模块
王贺
注册模块
网络邮件系统
电子邮件作为 Internet 最为广泛的应用之一,在人们的工作和生活中扮演着重要的角色,
应用的普及使电子邮件技术有了飞速的发展。网络电子邮件系统在当今的互联网上比比皆是,
不管是 windows 上的普及,还 linux 上的稳定可靠和低廉;不管是分布式系统,还是基于
P2P,都离不开邮件系统的基本原理。
邮件传输原理
在 Internet 上将一段文本信息从一台计算机传送到另一台计算机上,可通过两种协议来
完成,即 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)和 POP3(Post Office
Protocol,邮局协议 3)。SMTP 是 Internet 协议集中的邮件标准。在 Internet 上能够接收电子
邮件的服务器都有 SMTP。电子邮件在发送前,发件方的 SMTP 服务器与接收方的 SMTP
服务器联系,确认接收方准备好了,则开始邮件传递;若没有准备好,发送服务器便会等待,
并在一段时间后继续与接收方邮件服务器联系。这种方式在 Internet 上称为“存储——转发”
方式。POP3 可允许 E-mail 客户向某一 SMTP 服务器发送电子邮件,另外,也可以接收来自
SMTP 服务器的电子邮件。换句话说,电子邮件在客户 PC 机与服务提供商之间的传递是通
过 P0P3 来完成的,而电子邮件在 Internet 上的传递则是通过 SMTP 来实现。如图所示:
注:服务器 A 是发送邮件服务器(SMTP),服务器 B 是接收邮件服务器(POP3/IMAP)
1. 电子邮件的发送和接收
电子邮件在 Internet 上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:
当我们要寄一个包裹的时候,我们首先要找到任何一个有这项业务的邮局,在填写完收件人
姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须
去这个邮局才能取出。同样的,当我们发送电子邮件的时候,这封邮件是由邮件发送服务器
发送主机
服务器 B
服务器 A
客户
SMTP
POP
Internet
2
2
(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送
到该服务器上,收信人要收取邮件也只能访问这个服务器才能够完成。
2. 电子邮件地址的构成
电子邮件地址的格式是“[email protected]”,由三部分组成。第一部分“USER”代表
用户信箱的帐号,对于同一个邮件接收服务器来说,这个帐号必须是唯一的;第二部分
“@”是分隔符;第三部分“SERVER.COM”是用户信箱的邮件接收服务器域名,用以标
志其所在的位置。
3. 电子邮件的工作原理
电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送
方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中。
更进一步的解释涉及到以下几个概念:
MUA -- Mail User Agent, 邮件用户代理,帮助用户读写邮件;
MTA -- Mail Transport Agent, 邮件传输代理,负责把邮件由一个服务器传到另一个服务器或
邮件投递代理;
MDA -- Mail Delivery Agent, 邮件投递代理,把邮件放到用户的邮箱里。
整个邮件传输过程如下:
目前使用的 SMTP 协议是存储转发协议,意味着它允许邮件通过一系列的服务器发送
到最终目的地。服务器在一个队列中存储到达的邮件,等待发送到下一个目的地。下一个目
的地可以是本地用户,或者是另一个邮件服务器。
如果下游的服务器暂时不可用,MTA 就暂时在队列中保存信件,并在以后尝试发送。
关于邮件系统的其他一些技术,我们暂且不考虑。如下所示:
邮件服务器提供了邮件系统的基本结构,包括邮件传输、邮件分发、邮件存储等功能,
以确保邮件能够发送到 Internet 网络中的任意地方。目前邮件服务器有两种不同的应用群体:
ISP 提供商和企事业单位。
Web 邮件技术,使邮件用户可以在任何地方使用浏览器登录邮件服务器收发邮件,而
不用配置邮件客户端程序。
多域邮件服务是一台物理服务器为多个独立注册 Internet 域名的企业或单位提供电子
邮件的服务,在逻辑上,这些企业和单位拥有自己独立的邮件服务器(企业邮局),也可以
称为虚拟邮件服务器技术。对于 ISP 提供商和企业集团公司来说,多域邮件服务器的支持能
力是选择邮件服务器的一个重要考虑因素。它可以方便地扩展其横向邮件服务能力。
使用 Linux 作为邮件服务器,可以与 Sendmail、MySQL 等开源软件共同使用,在满足
用户需求的基础上降低了系统价格。
邮件服务器的安全防护, 包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过
滤、安全审计等的多项安全技术。
身份认证主要指 SMTP 发信认证,此项功能对于邮件服务器是一个可选功能,主要目
3
3
的是防止黑客利用自己的服务器攻击其他邮件服务器。完善 SMTP 身份认证不仅可以制止
黑客的恶劣行为,同时可以保证自己的邮件服务器的各种资源可以充分地应用到日常的邮件
处理过程中,不会造成服务器的系统崩溃和资源浪费。
无论是 POP3 协议还是 SMTP 协议,由于其在设计之初的缺陷,全部使用明码进行消息
的传递,因此很容易造成信息的泄漏。可以通过两种方式提高系统的安全性:链路加密和端
对端加密。链路加密是使用加密工具(软硬件工具)对传输的线路进行数据加密,需要网络
设施的支持。
端对端加密是邮件客户端到邮件客户端的加密,是邮件服务器应当提供的功能,目前较
为流行的方式是使用 SSL/TLS 进行传输加密。垃圾邮件大多是一些带有商业性质的广告等
宣传品。据估计,仅仅商业性垃圾邮件一项,每封垃圾邮件所抵消的生产力成本就在 1 美元
左右。单是下载垃圾邮件所花费的上网费与电话费,每年就要花掉全球网民 94 亿美元。此
外,许多病毒以及身份证和信用卡盗用案例也与垃圾邮件有关。因此,需要邮件服务器具有
垃圾邮件处理的功能,抵御大部分垃圾邮件的攻击。黑客攻击和病毒本来是两个相对独立的
技术体系,但是随着网络的不断发展,网络工具与病毒越来越趋于融合,比如尼姆达病毒既
是病毒,也是网络攻击的一种方式,而应用广泛的电子邮件,也成了病毒传播的主要方式之
一。目前,大多数邮件服务器都具有了基本的病毒防护的能力。
目前的邮件服务器,仅中文就有若干字符集,如 GB-2312、Big5 等等,虽然我们可以
统一标准,但是,在实际的过程中,我们不可能统一所有的邮件客户端,因此我们只能要求
邮件服务器支持多语言的环境。
由于目前许多邮件服务器处于电信托管等方式(服务器托管、服务器租用),不可能经
常进行本地操作,因此目前邮件服务器均提供了远程邮件监控的功能。可以通过 Web 方式,
监控邮件服务器的工作状态,包括在线用户数、邮件处理数量和速度、存储空间使用率等,
并且可以随时对出现的发信高峰和网络攻击进行远程处理。
电子邮件系统应该具备无限的扩展能力,Internet 网络的一个特性是变化无常,需要应
对随时而来的应用尖峰。因此,需要电子邮件系统具有无限的可扩展能力,这个能力主要体
现在邮件的处理能力和邮件的存储能力上。为了能够使邮件的处理能力可以无限扩展,就需
要引入集群和负载均衡技术,使应用平台可以在需要的时候无限扩充,满足长期或临时的业
务需要。对于 2000 万以上的邮件用户来说,每天发送的邮件量至少在几千万封,为了便于
邮件存储,需要高性能的邮件存储解决方案,最为理想的应该是 SAN 技术在邮件服务器领
域的应用。
常见邮件协议:
SMTP(Simple Mail Transfer Protocol):SMTP 主要负责底层的邮件系统如何将邮件从
一台机器传至另外一台机器。
POP(Post Office Protocol):目前的版本为 POP3,POP3 是把邮件从电子邮箱中传输到
本地计算机的协议。
IMAP(Internet Message Access Protocol):目前的版本为 IMAP4,是 POP3 的一种替代
4
4
协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看
到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。
IMAP 协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时
相对节省了用户察看电子邮件的时间。除此之外,IMAP 协议可以记忆用户在脱机状态下对
邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。
本系统主要从简单的邮件客户端来探讨一个邮件系统。利用 JavaMail 来实现。
以下是关于 JavaMail 的一些基本知识:
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是 Sun 发布的用
来处理 email 的 API。它可以方便地执行一些常用的邮件传输。我们可以基于 JavaMail 开发
出类似于 Microsoft Outlook 的应用程序。
虽然 JavaMail 是 Sun 的 API 之一,但它目前还没有被加在标准的 java 开发工具包中
(Java Development Kit),这就意味着你在使用前必须另外下载 JavaMail 文件。除此以外,
你还需要有 Sun 的 JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework
的运行很复杂,在这里简单的说就是 JavaMail 的运行必须得依赖于它的支持。在 Windows
2000 下使用需要指定这些文件的路径,在其它的操作系统上也类似。
JavaMail 是可选包,因此如果需要使用的话你需要首先从 java.sun.com 下载。目前最新
版本是 JavaMail1.4,使用 JavaMail 的时候需要 Javabean Activation Framework 的支持,因此
你也需要下载 JAF。安装 JavaMail 只是需要把他们加入到 CLASSPATH 中去,如果你不想
修改 CLASSPATH 的话,可以直接把他们的 jar 包直接 copy 到 JAVA_HOME/lib/ext 下。这
样 JavaMail 就安装好了。
JavaMail 包 中 用 于 处 理 电 子 邮 件 的 核 心 类 是 :
Session,Message,Address,Authenticator,Transport,Store,Folder 等。Session 定义了一个基本的邮
件会话,它需要从 Properties 中读取类似于邮件服务器,用户名和密码等信息。
Javax.mail.Session:Session 类定义了一个基本邮件会话(session),是 Java Mail
API 最高层入口类。所有其它类都是经由这个 session 才得以生效。Session 对象用
Java.util.Properties 对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享
的其它信息。
Javax.mail.Message:一旦获得 Session 对象,就可以继续创建要发送的消息。这
由 Message 类来完成。因为 Message 是个抽象类,必需用一个子类,多数情况下为
Javax.mail.internet.MimeMessage。MimeMessage 是个能理解 MIME 类型和头的电
子邮件消息,正如不同 RFC 中所定义的。虽然在某些头部域非 ASCII 字符也能被译码,
但 Message 头只能被限制为用 US-ASCII 字符。
Javax.mail.Address:一旦您创建了 Session 和 Message,并将内容填入消息后,
就可以用 Address 确定信件地址了。和 Message 一样,Address 也是个抽象类。您用
的是 Javax.mail.internet.InternetAddress 类。
Javax.mail. Authenticator:与 Java.net 类一样,JavaMail API 也可以利用
Authenticator 通过用户名和密码访问受保护的资源。对于 JavaMail API 来说,这些资源
就是邮件服务器。JavaMail Authenticator 在 Javax.mail 包中,而且它和 Java.net 中
同名的类 Authenticator 不同。两者并不共享同一个 Authenticator,因为 JavaMail API
用于 Java 1.1,它没有 Java.net 类别。
要使用 Authenticator,先创建一个抽象类的子类,并从 getPasswordAuthentication()
方法中返回 PasswordAuthentication 实例。创建完成后,您必需向 session 注册
5
5
Authenticator。然后,在需要认证的时候,就会通知 Authenticator。您可以弹出窗口,
也可以从配置文件中 ( 虽然 没 有加 密是 不 安全 的) 读 取用 户名 和密 码 ,将 它们 作为
PasswordAuthentication 对象返回给调用程序。
Javax.mail.Transport:消息发送的最后一部分是使用 Transport 类。这个类用协
议指定的语言发送消息(通常是 SMTP)。它是抽象类,它的工作方式与 Session 有些类
似。仅调用静态 send() 方法,就能使用类的 缺省 版本:Transport.send(message);
或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码(如
果不必要就不传),发送消息,然后关闭连接。
Javax.mail.Store:Store 类实现特定邮件协议上的读、写、监视、查找等操作。通
过 Javax.mail.Store 类可以访问 Javax.mail.Folder 类。
Javax.mail.Folder:Folder 类用于分级组织邮件,并提供照 Javax.mail.Message
格式访问 email 的能力。
具体用法大家可以查看 JavaMail API。
简单示例:
package fss.base;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
public class Mail
{
//把本程序所用变量进行定义。 具体在 main 中对它们赋植。
private MimeMessage mimeMsg; // MIME 邮件对象
private Session session; // 邮件会话对象
private Properties props; // 系统属性
private boolean needAuth = false; // smtp 是否需要认证
private String username = ""; // smtp 认证用户名和密码
private String password = "";
private Multipart mp; // Multipart 对象,邮件内容,标题,附件等内容均添加到其
中后再生成//MimeMessage 对象
public Mail(String smtp)
{
setSmtpHost(smtp);
createMimeMessage();
}
public void setSmtpHost(String hostName)
{
System.out.println("设置系统属性:mail.smtp.host = " + hostName);
if (props == null)
props = System.getProperties(); // 获得系统属性对象
剩余66页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 689
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功