Java程序设计课设说明书—简单邮件客户端.doc_第1页
Java程序设计课设说明书—简单邮件客户端.doc_第2页
Java程序设计课设说明书—简单邮件客户端.doc_第3页
Java程序设计课设说明书—简单邮件客户端.doc_第4页
Java程序设计课设说明书—简单邮件客户端.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 程序设计 课程设计报告 题 目 简单电子邮件客户端的设计 学 院 计算机科学与工程学院 专 业 计算机科学与技术 学生姓名 王渝凯 学 号 1000350225 指导教师 汪华登 2014 年 6 月 24 日 第 页2 目录 一 设计任务及目标一 设计任务及目标 3 3 1 1 绪言 3 1 2 目标 3 1 3 设计任务 3 1 4 需求分析 4 1 5 技术上可行性分析 4 二 总体设计二 总体设计 4 4 2 1 电子邮件的组成 4 2 2 电子邮件地址 5 2 3 功能模块 5 2 4 电子邮件报文格式 5 2 5 小结 6 三 详细设计三 详细设计 6 6 3 1 SMTP 协议发送信件 6 3 2 SMTP 协议 6 3 3 相关代码实现 8 四 结论四 结论 1313 五 任务完成情况五 任务完成情况 1414 5 1 特色 14 5 2 不足 14 参考文献参考文献 1414 附录附录 1414 第 页3 一 设计任务及目标一 设计任务及目标 1 1 绪言绪言 互联网技术的飞速发展引领人类进入了网络信息时代 而电子邮件已经取 代传统书信成为人们交流和交换信息的重要途径 越来越多的人在使用它 而 且使用它的人数将会继续增加 同时根据生活和交流的需要 同一个人同时拥 有了多个邮件 这样人们为了发送和接收邮件需要登陆不同的网页 使得操作 繁多浪费了很多宝贵的时间 为了解决这一问题研发出了电子客户端软件 通 过本软件可以完成不同的邮箱账户的邮件收发功能 而不需登陆多个不同的网 页 本系统软件名为电子邮件客户端软件 是基于 SMTP 和 POP3 协议从底层 播放器开发的 实现了邮件发送和接收的基本功能 并且能够附带邮件附件的 发送和接收 SMTP 全称是简单邮件传输协议 是一种提供可靠且有效电子邮件传输的 协议 它专门用来发送邮件用的 其中类 MailSend 实现了 SMTP 协议的解析 和实现邮件内容和附件发送的核心类 POP3 是邮局协议的第 3 个版本 它规 定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议 是专门用于接收邮件的 类 MailReceive 是利用成熟封装的 DLL 文件实现接收 邮件内容和下载附件的核心类 经过测试 本系统能够准确实现纯文本邮件和 带有附件的邮件的发送 以及邮件的接收和附件的下载 虽然当前流行的各大邮件客户端软件比如 Foxmail Outlook Express 等都 已实现邮件收发功能 但是除了最主要的收发信件之外 他们功能越来越复杂 但是人们平常真正用到的功能很少 很多功能尤其对于那些计算机知识相对缺乏 的人来说 更加显得太过于华丽而不实用 有鉴于此 在了解 RFC 底层协议 的基础上 开发了这个各种功能相对简单实用的电子邮件客户端软件 简化了 很多不必要的功能 它更容易掌握和使用 1 2 目标目标 完成一个电子邮件客户端软件 要求能够收取邮件 发送邮件 书写新邮 件 具有图形化界面 能批量发送邮件 1 3 设计任务设计任务 完成一个桂林电子科技大学计算机科学与工程学院关于 Java 程序设计 简单邮件客户端设计的工作 对桂林电子科技大学进行需求分析 根根需求分析对简单电子邮件的功能 进行调整和完善 第 页4 1 4 需求分析需求分析 本系统是采用 java 语言来开发的应用程序 实现简单电子邮件的发送与收取 电子邮 件是 Inernet 上最受欢迎是一种应用 电子邮件能够克服传统电话应用中通信双方必须在场 一些不必要的电话经常打断正在进行的工作等问题 人们通过电子邮件客户端软件 把邮 件发往收信人邮箱所在的电子邮件服务器 收信人子打开计算机上网时 通过邮件代理就 会看到自己邮箱中的邮件 同时也可以克服普通的电话通信不能传送文件等数据的缺点 通过客户端 用户可以向收信人发送附件 收件人就可以通过邮件代理收到发信人发送的 内容 电子邮件客户端具有方便实用 传递迅速和费用低廉等特点 电子邮件不仅可以传送文本 信息 而且可以通过附件传送音频 视频文件 1 5 技术上可行性分析技术上可行性分析 基于 javamail 来开发该客户端软件 所以选用 java 作为开发工具 选用 eclipse 作为 java 编译器 本系统软件名为电子邮件客户端软件 是基于 SMTP 和 POP3 协议从底层 开发的 实现了邮件发送和接收的基本功能 本系统软件具有收取邮件 发送 邮件 书写新邮件 具有图形化界面等功能 二 总体设计二 总体设计 2 1 电子邮件的组成电子邮件的组成 一个电子邮件系统的包括电子邮件协议 用户代理和电子邮件户服务器 一个完整的电子邮件传输过程 及其用到的协议和构件的位置 如下图 3 1 所 示 电子邮件胡武器采用客户端服务器模式 电子邮件服务使用运输层协议是 TCP 发送邮件 传输邮件 接收邮件 电子邮件协议规定如何在两个星湖通信的邮件进程之间交换信息 电子邮 件协议包括简单邮件传输协议 Simple Mail Transfer Protocol SMTP 邮局协议 Post Office Protocol POP3 发送方用户代理 User Agent UA 是用户与电子邮件飞的系统的接口 是在用户上网终端运行的软件 称为电子邮件客户端 用户通过 UA 发送和接 收邮件 电子邮件服务器的功能是发送和接收邮件 使用 SMTP 协议发送邮件 使 用 POP3 协议接收邮件 并向邮件发送者报告邮件传送的情况 用户代理 发送方邮件服 务器 接收方邮件服 务器 用户代理 第 页5 2 2 电子邮件地址电子邮件地址 Intertnet 中有大量的电子邮件服务器 用户可以在一台邮件服务器上申请 合法的用户账号 包括账号名和密码 申请成功后 邮件服务器为每个用户开 辟一个存放用户邮件的空间 成为用户的电子邮箱 每个电子邮箱都有一个全 球唯一的邮箱地址 也称为用户的电子邮箱地址 电子邮件有两部分组成 之 间由 间隔 前一部分为用户在该邮件服务器中的账号 即信箱名 后一部分 为邮件服务器的主机名 域名 用户信箱名 邮箱和邮件服务器所在主机的域名 例如发送方电子邮件服务器负责接收用户发来的邮件 根据邮件的目的地址 发呆哦接收方的邮件服务器中 接收方的邮件服务器同时也负责接收从其他服 务器发往其中的邮件 根据收件人的不同 将邮件分发到用户的电子邮箱 当然 接收方和发送方的邮箱也可以在一个邮件服务器中 2 3 功能模块功能模块 2 4 电子邮件报文格式电子邮件报文格式 电子邮件报文格式由两部分组成 邮件首部 Mail Head 和邮件主体 Mail Body RFC822 规定了电子邮件的首部格式 邮件主体由用户自由撰 写 电子邮件的首部电子邮件的首部 邮件首部包括一些关键字描述的字段 后面加上冒号 如下表所示 邮件首部有多项内容构成 其中发件人地址 邮件发送的日期和时间等是 由电子邮件应用程序根据系统设置自动产生的 而收件人地址 抄送人地址 邮件主题等是根据用户在创建邮件时输入的信息产生的 首部字段 含义及后面内容 Form发信人的邮件地址 Date发信日期 To一个或者多个收信人的邮件地址 登录 发送邮件 收取邮件 书写新邮件 第 页6 Subject邮件标题 Cc抄送 Bcc暗送 Reply To 对方会信用的地址 Received传输途中每个传输代理加上的信息 邮件主体邮件主体 邮件报文首部后接一个空白行 下面是以 ASCII 格式给出的邮件主体 邮件主体是实际要发送的内容 传统的电子邮件系统智能传递文本信息 目前 使用 Internet 电子邮件扩展协议不但可以发送各种文字和各种结构的文 本信息 而且可以发送语音 图像和视频等多媒体信息 建立读者可以通过 Telnet 应用程序与某一个电子邮件服务器连接 发送包 含邮件首部的邮件报文 方法是在命令行方式下输入命令 telnet servername 25 其中 servername 为电子邮件服务器域名 2 5 小结小结 网络上的 E mail 传送有点像我们日常生活中发送的普通信件一样 首相 把填好的邮件地址的信件交给邮局 再由邮局传递 最后头递给收信人 同样 的 一封 E mail 从用户的手中发出 首先有一个程序吧这封 E mail 发到 SMTP 服务器 发送邮件服务器 上 再由发送邮件服务器传递又见到大目的 信箱 收信人根据账号和口令接收信箱的邮件 很明显 完整的邮件程序至少需要四个部分 发送又见到服务器程序 我 们把它叫做发送邮件客户端程序 负责在网络上传送邮件到信箱的程序 称之 为 SMTP 服务器程序 接受并存储邮件并供用户提取的服务器程序 称之为 POP3 服务器程序 从 POP3 服务器收取邮件的程序 称之为接收邮件客户端程 序 三 详细设计三 详细设计 3 1 SMTP 协议发送信件协议发送信件 SMTP 服务器并不是邮件的目的地 它只是邮件的中间传递机构 发送邮 件的客户端软件不用了解如何把邮件发送到目的信箱的服务器上 只告诉具有 传递机制 SMTP 服务器一些必要的信息 接下来怎么投递就是 SMTP 服务器的 事情了 3 2 SMTP 协议协议 SMTP 只能传送 7 位 ASCII 文本邮件 SMTP 使用默认的端口号为 第 页7 25 SMTP 规定如何在两个互相通信的 SMTP 进程之间交换信息 采用客户端 服务器 SMTP 的工作过程 发送方和接收方邮件服务器之间的通信包括三个阶段 连接建立 邮件传 输和连接释放 这里把发送方邮件服务器成为本地邮件服务器 或称为 SMTP 客户 把接收方邮件服务器称为远地邮件服务器 或称为 SMTP 服务器 交互 过程中采用 TCP 连接 连接建立连接建立 连接建立包括用户代理与本地邮件服务器 用户邮箱所处的邮件服务器 及发送方邮件服务器 的连接 以及本地邮件服务器与远地邮件服务器 接收 方邮箱所处的邮件服务器 的连接 连接建立使用的电子邮件协议时 SMTP SMTP 发件人通过自己计算机上的用户代理撰写和编辑要发送的电子邮件 发件人通过用户代理点击发送按钮 由用户代理完成发送邮件 用户代理使用 默认端口号 25 与本地邮件服务器建立连接 把邮件先发送给本地邮件服务器缓 存下来 本地邮件服务器作为 SMTP 客户 每隔一定时间对邮件缓存扫描一次 若 有邮件发送 建立与远地邮件服务器连接的过程如下 1 使用默认端口号 25 与接收方电子邮件服务器 SMTP 服务器 建立 TCP 连 接 2 SMTP 服务器回答 220 Service ready 表示服务就绪 连接建立 3 SMTP 客户发送 HELO 命令给 SMTP 服务器 附上发送方主机名字 4 SMTP 服务器回答 250 OK 表示已经准备好接收 否则回答 421 Service not availible 表示服务器不可用 发送方邮件服务器与接收方邮件服务器之间是直接通过运输层协议 TCP 连 接的 中间不经过其他电子邮件服务器 尽管这两个邮件服务器的连接途径上 可能要经过若干个路由器 可以看出 一个电子邮件服务器在作为发送方时 用作 SMTP 客户 若作为接收方时 用作 SMTP 服务器 SMTP 客户和 SMTP 服务器实在后台工作的 电子邮件传输中的客户机和服务器 如下图所示 图 中描述了发送和接收电子邮件的过程 是客户端 发送方 SMTP 发送电子 邮件 采用 SMTP 协议 是发送方邮件服务器向接收方邮件服务器传输电子 邮件 采用 SMTP 协议 此时发送方邮件服务器的作用相当于客户端 接收方 邮件服务器的作用相当于服务器 是客户端 接收方 接收邮件 采用的是 POP3 协议 时相当于 Client 时相当于 Server SMTP SMTP POP3 SMTP 服务器 mail 1 SMTP 服务器 mail hd 客户端 接收 方 客户端 发送 方 第 页8 电子邮件传输中的客户机和服务器 3 3 相关代码实现相关代码实现 发信模块发信模块 private void sendButtonActionPerformed java awt event ActionEvent evt setProperties try 用 try 包围的语句是 java 编译器认为有可能出现异常 所以让你提 前处理 Session mySession createSession MimeMessage myMess createMessage mySession Transport transport mySession getTransport transport connect getServer getUser getPassword transport sendMessage myMess myMess getRecipients Message RecipientType TO transport close catch Exception e catch 是捕获上面的语句出现的异常 然后 在 catch 里写方法处理这个异常 JOptionPane showMessageDialog this 邮件发送失败 提示 JOptionPane INFORMATION MESSAGE System out println 发送失败 JOptionPane showMessageDialog this 邮件发送成功 提示 JOptionPane INFORMATION MESSAGE 第 页9 发送界面 发送成功后 显示发送成功 第 页10 接收邮件模块 接收邮件模块 邮件接收通过 POP3 协议读取电子邮件包括三个步骤 特许 用户代理 输入用户名和口令 获得读取邮件的许可 事务处理 用户读取文件报文 并 对邮件进行处理 更新 在用户退出后 邮件服务器删除标记的邮件报文 POP3 协议的会话过程如下图 POP3 服务器 POP3 客户 邮件数目与大小 列清单 OK OK 用户名 password 第 页11 POP3 服务器会在与用户代理的会话期间保留一些状态信息 例如 哪些邮 件报文做了删除标记 但是 POP3 服务器不会在于代理用户的交互过程中携带 状态信息 这样有利于 POP3 服务功能的实现 代码实现 boolean connectMess throws Exception 连接服务器 使用 POP3 收取邮件 try String host 默认 Properties props new Properties props put mail smtp host host props put mail smtp auth true 这样才能通过验证 Session session Session getDefaultInstance props Store store session getStore pop3 使用 POP3 会话机制 连接服务器 store connect host ad pa Folder folder store getFolder INBOX 如果是收件箱 folder open Folder READ WRITE message folder getMessages return true catch Exception e return false void showMess int i throws Exception 邮件信息获取 from message i getFrom 0 toString sender setText from title message i getSubject 邮件 读取邮件 邮件 1 读取邮件 1 第 页12 messTitle setText title SimpleDateFormat simpleFormat new SimpleDateFormat yy MM dd HH mm sendDay simpleFormat format message i getSentDate day setText sendDay if message i isMimeType multipart 接收邮件代码 Multipart mp Multipart message i getContent int bodyNum mp getCount for int j 0 j bodyNum j if mp getBodyPart j isMimeType text plain content String mp getBodyPart j getContent else if mp getBodyPart j isMimeType text content html 邮件类型 else content 不支持邮件类型 messContent setText content 收取邮件时 登陆到客户端 查看最新来信 第 页13 对邮件进行解码 void showMess int i throws Exception 邮件信息获取 解析 from message i getFrom 0 toString sender setText from title message i getSubject messTitle setText title SimpleDateFormat simpleFormat new SimpleDateFormat yy MM dd HH mm 获取 解析日期 sendDay simpleFormat format message i getSentDate day setText sendDay if message i isMimeType multipart 接收邮件代码 Multipart mp Multipart message i getContent int bodyNum mp getCount for int j 0 j bodyNum j if mp getBodyPart j isMimeType text plain content String mp getBodyPart j getContent 第 页14 else if mp getBodyPart j isMimeType text content html 邮件类型 else content 不支持邮件类型 messContent setText content 四 结论四 结论 电子邮件在 Internet 上发送和接收的原理可以很形象地用我们日常生活中 邮寄包裹来形容 当我们要寄一个包裹的时候 我们首先要找到任何一个有这 项业务的邮局 在填写完收件人姓名 地址等等之后包裹就寄出而到了收件人 所在地的邮局 那么对方取包裹的时候就必须去这个邮局才能取出 同样的 当我们发送电子邮件的时候 这封邮件是由邮件发送服务器 任何一个都可以 发出 并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服 务器上 收信人要收取邮件也只能访问这个服务器才能够完成 SMTP Simple Mail Transfer Protocol 简易邮件传输通讯协议 SMTP 是互联 网上的一种通讯协议 主要功能是用在传送电子邮件 当我们通过电子邮件程 序 寄 E mil 给另外一个人时 必须通过 SMTP 通讯协议 将邮件送到对方的 邮件服务器上 等到对方上网的时候 就可以收到你所寄的信 其实简单的说 POP 服务器是用来收信的 而且每个 E mail 地址一般只有一个 如果你要同时 收取多个邮箱的信件 就必须挨个设置每个邮箱的 POP3 服务器地址 你别告 诉我找不到 告诉你一个小窍门吧 在你申请了免费信箱之后 仔细看看它的 帮助文件 一般都能找到 至于 SMTP 服务器 可以理解为就是用来寄信的 而且大多数 SMTP 服务器也是免费的 也就是说 不管你有无 E mail 信箱 只 要想寄信 随便填上一个 SMTP 服务器 就可以寄信了 如果你用 Outlook Express 或者其它邮件程序发信 又同时拥有多个免费邮箱 不必设置多个 SMTP 服务器 只要选择一个填上就行了 比如新浪邮件提供的服务器就是 该客户端软件可以实现收取信件 发送新邮件 并对新邮件进行保存到草 稿箱 起到备注的作用 同时可以发送附件 方便使用 五 任务完成情况五 任务完成情况 基本实现了所有的功能 包括发送新邮件 书写新邮件 收取邮件 具有 图形化界面 达到了课设的要求 第 页15 5 1 特色特色 1 可以不用登录 WEB 即可从客户端收邮件 2 如果在客户端设置为自动登录 那么只需点一下 就可以进入邮件收发 3 如果你的电脑装了杀毒软件 它还可以在收邮件时进行杀毒 而 WEB 邮件的 杀毒只能靠服务商了 5 2 不足不足 最大的不足就是不能收取下载附件 没有多人发送功能 界面不够美观 做 的时候觉得没必要 参考文献参考文献 1 基于 W INDOWS 环境 POP3 协议邮件接收客户端的实现 卢秉亮 王玉 湘 许莉 沈阳航空工业学院学报 2 使用 Java Mail API 实现电子邮件客户端 杨宁 晋东南师范专科学校学报 3 Java 课程设计 第二版 耿祥义 清华大学出版社 4 Java 课程设计案例精编 张广彬等 清华大学出版社 附录附录 接收关键代码 public MessReceivor String ad String pa this ad ad this pa pa try if connectMess connectStatus 连接成功 catch Exception e connectStatus 连接失败 initComponents try showMess index 第 页16 catch Exception e setMiddel boolean connectMess throws Exception 连接服务器 try String host 默认 Properties props new Properties props put mail smtp host host props put mail smtp auth true 这样才能通过验证 Session session Session getDefaultInstance props Store store session getStore pop3 store connect host ad pa Folder folder store getFolder INBOX folder open Folder READ WRITE message folder getMessages return true catch Exception e return false void showMess int i throws Exception 显示邮件内容 否则抛出 from message i getFrom 0 toString sender setText from title message i getSubject messTitle setText title SimpleDateFormat simpleFormat new SimpleDateFormat yy MM dd HH mm sendDay simpleFormat format message i getSentDate day setText sendDay if message i isMimeType multipart Multipart mp Multipart message i getContent int bodyNum mp getCount for int j 0 j bodyNum j if mp getBodyPart j isMimeType text plain content String mp getBodyPart j getContent if mp getBodyPart j isMimeType text html content html 邮件类型 else content 不支持邮件类型 第 页17 messContent setText content void freshMess throws Exception connectMess showMess index 发送关键代码 public void setProperties setFrom getMessFrom getText setTo getMessTo getText setUser getFrom substring 0 getFrom indexOf setPassword new String getPass getPassword setServer getHost getText setProtocol getMyProtocol getText setTitle getMessTitle getText setContent getMessContent getText public Session createSession 建立会话 Properties props new Properties props setProperty mail transport protocol getProtocol 设置邮件协 议为 smtp props setProperty mail smtp auth true 必须这样设置 以便能 够向服务器提交认证信息 Session session Session getInstance props 注意这里只能用 getInstance 方法 session setDebug true return session public MimeMessage crea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论