超超超超超详细的计 课设 告-简单电子邮件客户端的设计与实现

简单电子邮件客户端的设计与实现

目录
题 目: 简单电子邮件客户端的设计与实现… 1
一、 设计背景… 1
二、 设计内容及目的… 1
三、 设计环境… 2
四、 预备知识… 2
五、 设计思路… 6
六、 设计演示… 11
七、 具体代码… 20
八、 总结… 29

一、设计背景

电子邮件的应用非常广泛,是最重要的 Internet 服务之一,在我们日常工作 学习中扮演中重要角色。在 络 交中,经常使用邮件的方式来发送我们的信息。 某些时候,我们需要邮件“自动”发出:例如找回密码的时候,密码会发送到你 的安全邮箱中,例如游戏付费激活的时候,会以邮箱的形式给你发送激活码进行 激活,再比如,当你的信用卡消费的时候,你绑定的服务邮箱就会收到账单提醒 邮件。本次课程设计将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件 服务器发送邮件以及接收邮件

二、设计内容及目的

本次课程设计的主要任务是设计并实现一个简单的电子邮件客户端的设计 与实现,能完成电子邮件的收取,发送并撰写新邮件等功能。 本次课程设计的主要目的是熟悉 SMTP 和 POP3 协议的工作原理,掌握 络 编程方法。 通过本次课程设计可以编写程序代码生成一封带内嵌附件又带图片的复杂 邮件以及编写 java 邮件发送程序发送邮件。

三、设计环境

(一)计算机及操作系统:PC 机,Windows10

(二)语言:Java

(三)开发环境准备

  1. 提前在 qq 和 sohu 上注册一个免费的账 ;
  2. 获取 smtp 和 pop3 服务器的名称;
  3. 获取 smtp 和 pop3 服务器授权码;

四、预备知识

(一)邮件服务器

我们的邮件的收发,都是依靠邮件服务器来的。电子邮件的发送与接收类似于现 实中的寄信流程,寄信人把新给当地的邮局 A,当地的邮局通过运输,将信件寄 到收信人所在的地方,由收信人所在地的邮局 B 接收,然后由邮递员送给收件 人,这其实和我们发送电子邮件一样,先是发件人通过新浪的邮件服务器发送邮 件,如果收件人搜狐邮件服务器的,那么新浪邮件服务器将邮件发送给搜狐邮件 服务器,然后搜狐邮件服务器接收之后再给收件人。

每个电子邮件服务器之上都可以开设多个电子邮件,电子邮件也称之为 Email 地址,它类似现实生活中的通讯地址,用户可以通过这个地址接受别人发 来的电子邮件和向别人发送电子邮件。电子邮箱是用户在邮件服务器上申请的一 个账户。邮件服务器把接受到的邮件保存到为某个账户分配的邮箱空间中,用户 通过其申请的用户名和密码登录到邮件服务器上查收该地址已经收到的电子邮件。

(三)邮件客户端软件

邮件客户端软件负责与邮件服务器通讯,主要用于帮助用户将邮件发送给 SMTP 服务器从 POP3/IMAP 邮件服务器读取用户的电子邮件。邮件客户端软件通常集 邮件撰写、发送和接收功能于一体。

(四)邮件传输协议

协议就分为 SMTP 与 POP3/IMAP 协议,前者是用于收发邮件的协议,后者是用于 读取 SMTP 服务器中的邮件的协议。

  1. SMTP 协议(简单邮件传输协议)
    它定义了邮件客户端软件与 SMTP 服务器之间、以及两台 SMTP 服务器之间的 通讯规则。

  2. POP3 协议(邮局协议)
    它定义了邮件客户端软件与 POP3 服务器的通讯规则。

  3. IMAP 协议(Internet 消息访问协议)
    它是对 POP3 协议的一种扩展,定义了邮件客户端软件与 IMAP 服务器的通讯 规则

(五)Java Mail

JavaMail 是 Sun 公司为方便 Java 开发人员在应用程序中实现邮件发送和接收功 能而提供的一套标准开发包,它支持一些常用的邮件协议,如 SMTP、POP3、IMAP。 开发人员使用 JavaMail API 编写邮件处理软件时,需考虑邮件协议的底层实施 细节,只要调用 JavaMail 开发包中的 API 类就可以了。JavaMail 也提供了能够 创建出各种复杂 MIME 格式的邮件内容相关的 API。 JavaMail API 按其功能划分通常可分为如下三大类:

定义和收集会话信息的 API:Session 类
创建和解析邮件内容的 API:Message 类
发送邮件的 API:Transport 类
接收邮件的 API:Store 类

(三)接收邮件

  1. 从 Session 对象中获得实现了某种邮件发送协议的 Store 对象;
  2. 登录邮箱,连接上 POP3 或者 IMAP4 服务器;
  3. 调用 Store 的 getFolder 方法,获取邮箱中的某个邮件夹的 Folder 对象;
  4. 调用 Folder 对象中的 getMessage 或 getMessages 方法,获取邮件夹中的某一 封邮件或者是所有邮件,每一封的邮件以一个 Message 对象返回。

  1. xxx@qq.com 邮箱通过 smtp 协议连接到 Smtp 服务器,然后发送一封 邮件给腾讯的邮件服务器。
  2. 腾讯分析发现需要去搜狐的邮件服务器,通过 smtp 协议将邮件转投给搜狐 的 Smtp 服务器。
  3. 搜狐将接收到的邮件存储在搜狐的存储空间中。
  4. 搜狐邮箱通过 Pop3 协议连接到 Pop3 服务器收取邮件。
  5. Pop3 服务器将取出来的邮件送到 is_test@sohu.com 邮箱中。

六、设计演示

(一)发送简单纯文本邮件

可以看到控制台输出的是邮件的原始内容,还未被解析,所以需要经过解析 才能阅读。

七、具体代码

(一)发送简单文本邮件

【我放个截图吧==不是wps会员 pdf转不成word了】

超超超超超详细的计 课设 告-简单电子邮件客户端的设计与实现

八.总结

Javamail 邮件开发是学习 Java 语言后收获颇多的一个项目,在着手开始之 前,查阅了许多资料,尤其是是张孝祥老师的《java 邮件开发》给我带来很深的 感悟。有时觉得编程这件事情,很多时候就是听起来一个功能的实现好像很难, 但当你着手去实现,去研究他的实现过程的时候就会发现其实也没有想象中那么 难。

发送邮箱一般需要通过 SMTP 服务器,SMTP 相当于我们邮局会帮助我们把 邮件送到,新手使用邮箱进行测试必须将邮箱开通 SMTP/POP3,获取授权码, 这个授权码是在第三方客户端进行登陆会用到。

在初步发送一封简单文本邮件时出现了问题,qq 邮箱与搜狐邮箱并不能双 向进行邮件发送与接收,发现代码没有问题,双方的 SMPT/POP 都开了授权且 发送方的授权码正确,而后请教老师和同学并发现 jar 包出现了问题以及没有对 项目及时进行缓存。对出现的问题一一进行处理,在课程设计的最后,出现了一 个令我措手不及的问题,频繁使用第三方软件发送邮件,被搜狐的服务器进行暂 时拉黑,再次搜集资料请教同学,代码突然就可以执行了。

总的来说,这次的课程设计学到很多东西,javamail 中不同类的使用及方法, 提高了编程思维能力,同时学会思考问题,提出解决代码问题方案

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月20日
下一篇 2020年7月20日

相关推荐