邮件发送实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学科技学院
实验报告
|
|
实验名称网络软件程序设计
课程名称邮件发送程序
|
|
专业班级:网络08K1 学生姓名:牛红磊
学号:0819******** 成绩:
指导教师:朵春红实验日期: 2011.1.4
一.实验目的与要求
1.任务:设计一个邮件发送程序,可以按照要求实现邮件发送器的功能。
2.目的:使学生加深对网络通信协议、网络编程接口等基本概念、基本原理的理解,熟悉各种应用各种网络通信协议和网络编程接口编写网络应用程序的方法,拓宽学生的知识领域,锻炼学生的实践技能,培养学生科学的工作作风。
3.要求:基本功能完善,界面美观,方便易用,操作无误;通过课程设计学生应该学会使用各种网络通信协议和网络编程接口编写不同类型的网络应用程序,具备初步分析、设计和开发网络应用软件的能力,具备分析与检查软件错误、解决和处理实验结果的能力。
4. 学生要求人数:1人
二.实验内容
邮件发送器遵守基于C/S模式的SMTP协议,它规定了发信人把电子邮件发送到收信人的电子邮件的全过程,SMTP客户机与SMTP服务器两者在通信过程中如何交换信息。邮件发送器的主要功能如下:
(1)能够实现简单的邮件发送功能,能够发送普通的文本内容;
(2)能够实现带附件的邮件发送功能。
三.实验原理
邮件服务器按通讯协议可以划分为两种类型:
1.STMP服务器。是Simple Mail Transfer Protcol的简写,用于替用户发送邮件和
接受外面发送给本地用户的邮件。是遵循SMTP协议的发送邮件服务器,,基于TCP
服务的应用层协议。
2.POP3服务器。是Post Office Protocol 的简写,用于替用户帮助用户读取SMTP服
务器接受进来的该用户的邮件。它定义了邮件客户端软件与POP3服务器的通讯规
则。
3. JavaMail,提供给开发者处理电子邮j件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。
4..JavaMail API按其功能划分通常可分为如下的三类。
(1)创建和解析内容的API:Message类是创建和解析邮件核心API,它的实例对象代表一封邮件。
(2)发送邮件的API:Transport类是发送邮件的核心API,它的实例对象实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
(3)接受邮件的API:Store类是接受邮件的核心API,它的是实例实现了邮件接受协议的邮件接收对象,例如POP3协议。
5. 一些第三方API:
(1)Oreilly的COS的上传组件。
(2)JAF是一个专用的数据处理框架,它用于封装数据,并为应用程序提供
访问和操作数据的接口。JAF的主要作用在于让java应用程序知道如何对一个数据源进行查看、编辑和打印等操作。
对于通过JAF封装的数据,应用程序通过JAF提供的接口可以完成如下功能:
1、访问数据源中的数据.
2、获知数据源的数据类型.
3、获知可对数据进行的各种操作.
4、用户对数据执行某种操作时,自动创建执行该操作的软件部件的实例对象.
四.实验内容和步骤
1. Session 定义了一个基本的邮件会话,任何工作都是基于这个Session的。Session 对象需要一个 java.util.Properties 对象来得到类似邮件服务器,用户名,密码这样的信息。
Session 的构造函数是私有的,你可以通过 getDefaultInstance() 方法来取得一个单一的可以被共享的默认session .
2.Message
一旦你创建了Session对象,那么下面要做的就是创建 message 来发送。Message 是一个抽象类,在大部分应用中你可以使用它的子类 javax.mail.internet.MimeMessage 。
可以用如下的方法创建一个 Message
MimeMessage message = new MimeMessage(session);
我们注意到,这里需要用session对象作为构造函数的参数。
一旦你得到了 message ,你就可以来设置它的各个部分(parts)。设置内容(content)的基本的机制是使用setContent() 方法。
message.setContent("Email Content. ","text/plain");
设置主题(subject ),使用setSubject() 方法
message.setSubject(" Subject ");
3.Address
当你已经创建Session 以及 Message,并且已经为message 填充了内容,那么接下来要做的就是给你的邮件添加一个地址(Address)。就像Message一样,Address也是一个抽象类,我们可以使用它的一个子类javax.mail.internet.InternetAddress。
Address address = new InternetAddress(“邮件地址");
你需要为 message 的from以及 to 字段创建address对象。为了识别发送者,你需要使用setFrom() 和 setReplyTo() 方法。
messge.setFrom(address);
如果你的message 需要显示多个 from 地址,可以使用 addFrom() 方法
Address address[] = {....};
message.addFrom(address);
为了辨识message 的收件人,你需要使用 setRecipient() 方法。这个方法除了address参数之外,还需要一个Message.RecipientType 。
message.addRecipient(type,address);
Message.RecipientType有几个预先定义好的类型
Message.RecipientType.TO收件人
抄送
Message.RecipientType.BCC暗送
message.addRecipient(Message.RecipientType.To, toAddress);
message.addRecipient(, ccAddress);
4.Authenticator
通过Authenticator设置用户名、密码,来访问受保护的资源,这里的资源一般指的是邮件服务器。
Authenticator也是一个抽象类,你需要自己编写子类已备应用。你需要实现getPasswordAuthentication()方法,并返回一个PasswordAuthentication实例。你必须在 session被创建时,注册你的 Authenticator。这样,当需要进行认证是,你的Authenticator就可以被得到。
Properties props = new Properties();
//设置属性
Authenticator auth = new YourAuthenticator();
Session session = Session.getDefaultInstance(props, auth);
5.Transport
发送消息最后的一步就是使用Transport类,你可以通过两种方法来进行发送。 Transport 是一个抽象类,你可以调用它静态的send() 方法来发送