黄凡_基于Java语言邮件发送软件设计(1)_第1页
黄凡_基于Java语言邮件发送软件设计(1)_第2页
黄凡_基于Java语言邮件发送软件设计(1)_第3页
黄凡_基于Java语言邮件发送软件设计(1)_第4页
黄凡_基于Java语言邮件发送软件设计(1)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、基于 JAVA 语言邮件发送软件设黄凡,物理与电子信息学院摘 要:随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信 方式之一。基于 Java Mail的邮件收发系统就是利用 JavaMail 开发包的高级应用 和 E-Mail 的相关协议开发出功能相对简单,实用、方便、快捷的邮件收发系统。 主要用于帮助用户将邮件发送给 SMTP 服务器和从 POP3邮件服务器读取用户的 电子邮件。 本文就是结合 SMTP 以及 POP3协议的实现原理、 相关 Java Mail API帮助文档以及相关参考书,实现了一个工作在 PC 下的邮箱客户端程序。关键词:SMTP 协议; POP3协议; Ja

2、va Mail APIThe design of software based on JAVA language to send mailHuang Fan, College of Physics and Electronic Information Abstract: Abstract: with the development of Internet technology and network office, e-mail has become one of main communication mode. The JavaMail mail system using advanced

3、E-Mail application and JavaMail development kits relevant agreements to develop relatively simple function based on e-mail system, practical, convenient, fast. Mainly used to help users to send a message to a SMTP server and the server to read from the POP3 mail user email. This paper is the combina

4、tion of SMTP and POP3 protocol implementation principle, related JavaMail API help documentation and reference books, the realization of a work in PC e-mail client program.Keywords: SMTP protocol; POP3 protocol; JavaMail API1引言电子邮件 electronic mail ,简称 E-mail 又称电子信箱、电子邮政,它是一种 用电子手段提供信息交换的通信方式。 也是全球多种

5、网络上使用最普遍的一项服 务。这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速 的方法。进入国际互连网的用户可以方便的使用电子邮件,而且不用任何纸张, 就可以方便的写、寄、读、转发信件,而且它不论地球的任何区域,只要他在网 内就可以进行转发, 而不受任何时间的限制。 利用电子邮件还可以实现文件的传 输、电子杂志的订阅,进行学术讨论,举行电子会议或者查询信息。本文使用 Eclipse 作为开发工具,结合 SMTP 、 POP3等协议,开发出一个电子邮件发送端 应用程序。2 JavaMail API与电子邮件收发协议2.1JavaMail API的简介1 JavaMail 支持的

6、协议类型:1简单邮件传输协议 SMTP :Simple Mail Transfer Protocol定义了应用程序发 送电子邮件的规范,它是通过 TCP/IP协议,提供一种可靠且有效电子邮件传输 的协议, 实现客户端与服务器端的连接与通信, 在实际的邮件发送过程中, 基于 STMP 规则的邮件发送程序与局域网或互联网中的电子邮件服务器进行数据信 息交换,将用户的电子邮件数据文件发送至邮件服务器中。此外在邮件接受程序的设计中, JavaMail 还支持 POP3协议 (邮局协劝和 IMAP 协议 Internet 邮件访问协议 。2 JavaMail API介绍:JavaMail API的开发是

7、 SUN 为 Java 开发者提供公用 API 框架的持续努力的 良好例证,提倡公用框架, 反对受限于供应商的解决方案, 充分预示着一个日益 开放的开发环境的建立。 JavaMail API针对电子邮件的封装、分发和接受等均定 义了相应的对象,这些对象中定义方法在执行过程中依赖于具体的邮件传输协 议,以及网络系统中邮件服务器支持的邮件管理协议类型。一般情况下,在 Eclipse 中,电子邮件程序的编写是主要是利用 Java jdk1.7扩展包 JavaMailAPI 等及相关的 SMTP 等通信协议来实现的。 随着现代软件业的 发展, Java 提供了方便、简易、与服务器无关且稳固的电子邮件处

8、理组件,使我 们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程 序。 JavaMail 便是一个很好的电子邮件程序开发扩展组件。JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如 Eudora 、 Foxmail 、 MS Outlook Express一般的邮件用户代理程序 (Mail User Agent,简称 MUA 。而不是像 sendmail 或者其它的邮件传输代理(Mail Transfer Agent, 简称 MTA 程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们 这些电子邮件用户日常用 MUA 程序来读写邮件,而 MU

9、A 依赖着 MTA 处理邮 件的递送。JavaMail 核心类:Session 、 Message 、 Address 、 Authenticator 、 Transport 、 Store 和 Folder 。Session 类:定义了基本的邮件会话。就像 Http 会话那样,进行收发邮件的 工作都是基于这个会话的。 Session 对象利用了 java.util.Properties 对象获得了邮 件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。Message 类:当建立了 Session 对象后,便可以被发送的构造信息体了。在 这里 SUN 提供了 Message 类型来帮

10、助开发者完成这项工作。由于 Message 是一 个抽象类,大多数情况下,使用 ernet.MimeMessage 这个子类,该 类是使用 MIME 类型、 MIME 信息头的邮箱信息。 信息头只能使用 US-ASCII 字 符,而非 ASCII 字符将通过编码转换为 ASCII 的方式使用。Address 类:像 Message 一样, Address 类也是一个抽象类, 所以我们将使用 ernet.InternetAddress 这个子类。Authenticator 类:像 类那样, JavaMail API 通过使用授权者类 (Au

11、thenticator 以用户名、 密码的方式访问那些受到保护的资源, 在这里 “ 资源 ” 就是指邮件服务器。在 javax.mail 包中可以找到这个 JavaMail 的授权者类 (Authenticator 。Transport 类:在发送信息时, Transport 类将被用到。这个类实现了发送信 息的协议(通称为 SMTP ,此类是一个抽象类,我们可以使用这个类的静态方 法 send( 来发送消息:Transport.send(message;Store 和 Folder 类:接收邮件和发送邮件很类似都要用到 Session 。但是在获 得 Session 后,需要从 Sessio

12、n 中获取特定类型的 Store ,然后连接到 Store ,这里 的 Store 代表了存储邮件的邮件服务器。在连接 Store 的过程中,极有可能需要 用到用户名、密码或者 Authenticator 。2.2SMTP 协议简介及通讯模型SMTP 是简单邮件传输协议, 它是一组用于由源地址到目的地址传送邮件的 规则, 由它来控制信件的中转方式。 SMTP 协议属于 TCP /IP 协议族, 它帮助每 台计算机在发送或中转信件时找到下一个目的地。 通过 SMTP 协议所指定的服务 器, 我们就可以把 Email 寄到收信人的服务器上了, 整个过程只要几分钟。 SMTP 服务器则是遵循 SMT

13、P 协议的发送邮件服务器, 用来发送或中转你发出的电子邮 件。SMTP 是一种提供可靠且有效电子邮件传输的协议。 SMTP 是建模在 FTP 文件传输服务上的一种邮件服务, 主要用于传输系统之间的邮件信息并提供来信 有关的通知。SMTP 独立于特定的传输子系统, 而且仅要求一条可以保证传送数据单元顺 序的通道且只需要可靠有序的数据流信道支持。 SMTP 重要特性之一是其能跨越 网络传输邮件。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、 防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中 的主机利用非 TCP 传输层协议组成。使用 SMTP

14、,可实现相同网络上处理机 之间的邮件传输, 也可通过中继器或网关实现某处理机与其它网络之间的邮件传 输。在这种方式下, 邮件的发送可能经过从发送端到接收端路径上的大量中间中 继器或网关主机。域名服务系统 (DNS 的邮件交换服务器可以用来识别出传输 邮件的下一跳 IP 地址。 SMTP 在传输文件过程中使用 25号端口,可大致用下 面的图 2.1来表示:图 2.1 SMTP通信模型 2.3 POP3协议简介POP3,全名为“ Post Office Protocol - Version 3” ,即“邮局协议版本 3” 。是 TCP/IP协议族中的一员, 协议默认端口是 110 , 适用的构架结

15、构是 C/S, 由 RFC 1939 定义。它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮 件的协议。它是因特网电子邮件的第一个离线协议标准, POP3协议允许用户从 服务器上把邮件存储到本地主机 (即自己的计算机上, 同时根据客户端的操作 删除或保存在邮件服务器上的邮件,而 POP3服务器则是遵循 POP3协议的接收 邮件服务器, 用来接收电子邮件的。 本协议主要用于支持使用客户端远程管理在 服务器上的电子邮件。POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上, 电子邮件客户端调用邮件客户机程序以连接服务器, 并下载所有未阅读的电子邮 件。 这种离线访问模式是一

16、种存储转发服务, 将邮件从邮件服务器端送到个人终 端机器上,一般是 PC 机或 MAC 。一旦邮件发送到 PC 机或 MAC 上,邮件 服务器上的邮件将会被删除。 但目前的 POP3邮件服务器大都可以 “只下载邮件, 服务器端并不删除” ,也就是改进的 POP3协议。POP3协议有三种状态:认正状态,处理状态,更新状态。命令的执行可以 改变协议的状态,而对于具体的某命令, 它只能在具体的某状态下使用。 客户机 与服务器刚与服务器建立连接时, 它的状态为认证状态; 一旦客户机提供了自己 身份并被成功地确认, 即由认可状态转入处理状态; 在完成相应的操作后客户机 发出 QUIT 命令,则进入更新状

17、态,更新之后又重返认可状态;当然在认可状态 下执行 QUIT 命令,可释放连接。状态间的转移如下所示:等待连接身份确认 quit 命令C |认证 | |处理 | |更新 |-S|_|重返认证状态。3概要设计3.1系统的总体结构框图(类图每份电子邮件的发送都要涉及到发送方与接收方, 发送方式构成客户端, 而 接收方构成服务器。 发送方通过邮件客户程序, 将编辑好的电子邮件向邮局服务 器(SMTP 服务器发送。邮局服务器识别接收者的地址,并向管理该地址的邮 件服务器(POP3服务器发送消息。本文使用免费提供的 POP 服务,直接使用 注册的账号密码登陆服务器向目的地址发送邮件。 POP 协议具体过

18、程是:邮件 发送到服务器上, 电子邮件客户端调用邮件客户机程序以连接服务器, 并下载所 有未阅读的电子邮件。 这种离线访问模式是一种存储转发服务, 将邮件从邮件服 务器端送到个人终端机器上,一般是 PC 机或 MAC 。一旦邮件发送到 PC 机 或 MAC 上,邮件服务器上的邮件将会被删除。图 3.1 系统的总体结构框图3.2系统模块结构电子邮件客户端主要由以下两个模块构成:发送邮件模块、用户登入。其功 能模块如图 3.2所示: 图 3.2 系统功能模块图1用户登入:当邮箱跟密码正确的时候才可以登入进去。 2发送邮件模块:邮件正文写好后然后点发送。3.3类的功能设计 3.3.1用户登入类关键变

19、量:private JPanel mailPanel = new JPanel(; private JPanel passwordPanel=new JPanel(; private JPanel mailLoginPanel; private JComboBox jComBox; private JLabel maitLabel;private JLabel mailPasswordLable; private JTextField mailText;private JPasswordField passwordText; 关键方法:String mail=mailText.getText(

20、;String password=passwordText.getText(;3.3.2邮件发送类关键变量:private JLabel subject;/邮件主题private JLabel mainContent;/邮件正文 private JLabel address;/目的邮箱 private JTextField subjectText; private JTextArea contentText; private JTextArea addText; private JPanel subjectPanel; private JPanel contentPanel; private

21、JPanel addressPanel; private JButton sendButton;电子邮件发送端程序用 户 登 入发 送 邮 件private JButton sendSuccess;private JButton sendAgain;关键方法:public static void send(String mail,String password,String receivers, String subject, String mailContent, String mimetypesend(receivers, subject, mailContent, mimetype;/*

22、 发送邮件* param receivers 收件人* param subject 标题* param mailContent 邮件内容* param mimetype 内容类型 默认为 text/plain,如果要发送 HTML 内容,应 设置为 text/html*/public static void send(String receiver, String subject, String mailContent, String mimetype send(new Stringreceiver, subject, mailContent, mimetype; /* 发送邮件* param

23、 receivers 收件人* param subject 标题* param mailContent 邮件内容* param mimetype 内容类型 默认为 text/plain,如果要发送 HTML 内容,应 设置为 text/html*/public static void send(String receivers, String subject, String mailContent, String mimetype send(receivers, subject, mailContent, null, mimetype;/* 发送邮件* param receivers 收件人*

24、 param subject 标题* param mailContent 邮件内容* param attachements 附件* param mimetype 内容类型 默认为 text/plain,如果要发送 HTML 内容,应 设置为 text/html*/3.4邮件发送流程图邮件发送流程图如图 3.4,发送邮件时会对邮件以及账号进行处理和验证。 当账号跟密码都符合的时候,然后点击发送, 邮件就发出去了。 假如账号跟密码 不正确的话,邮件就发送失败。图 3.4 邮件发送流程图4功能模块的实现4.1程序主界面的实现本次设计中 , 主要用到对话框 Java 图形界面。 Java 图形界面是实

25、现应用程序 人机交互的重要组成部分。 它不但可以实现数据流的输入和输出, 而且也可以移 动和关闭对话框。主界面有对应的按钮,方便用户使用。关键代码如下:首先构造客户端面板 , 定义以下几个需要的界面和按钮maitLabel=new JLabel(邮箱 ;mailPasswordLable=new JLabel(密码 ;subject=new JLabel(邮件主题 ;mainContent=new JLabel(邮件正文 ;address=new JLabel(目的邮箱 ;sendButton=new JButton(发送 ;其次将其安排到客户端面板上相应位臵container.add(mai

26、lLoginPanel,BorderLayout.NORTH;container.add(contentPanel,BorderLayout.CENTER;container.add(addressPanel,BorderLayout.SOUTH; 图 4.1 程序主界面实现图4.2邮件发送的实现首先进入主界面,在主界面输入邮箱、密码、邮件主题、邮件正文和目的邮 箱,然后点发送, 假如邮箱账号跟密码都正确的话就可以发送邮件, 否则就发送 不成功。1获取收件人账号(程序会检测输入账号合法性 。关键代码:String mail=mailText.getText(;String password=p

27、asswordText.getText(;/ SMTP服务器需要验证:props.put(mail.smtp.host, ;/Smtpprops.put(mail.smtp.auth, true;2 获取账号设臵界面中用户输入的账号和密码传入服务器。关键代码:/ 传入用户名和口令:Session session = Session.getDefaultInstance(props, new Authenticator( protected PasswordAuthentication getPasswordAuthentication( return new PasswordAuthentic

28、ation(705048972,880722;session.setDebug(true; 3 邮件发送成功的提示关键代码:sendSuccess=new JButton(发送成功! ! ;sendSuccess.setBackground(Color.red;sendSuccess.setVisible(false;5程序测试5.1主界面测试本次设计中 , 主要用到对话框 Java 图形界面。 Java 图形界面是实现应用程序人 机交互的重要组成部分。 它不但可以实现数据流的输入和输出, 而且也可以移动 和关闭对话框。主界面有对应的按钮,方便用户使用, 如图所示: 图 5.1主界面测试5.2发送电子邮件程序测试在上一步已经测试了账号输入,然后再收件人地址输入框中输入“ huangfan” 。 接下来在主题输入框中输入 “邮件测试” , 正文中输入 “黄 凡 0908322” ,最后点击发送,当邮件发送成功会在发送旁边返回“发送成功”的 信息。如图为测试邮件发送成功。图 5.2(a)发送电子邮件程序测试面 图 5.2(b)发送电子邮件程序测试面 结论 电子邮件在 Internet 上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来 形容:当

温馨提示

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

评论

0/150

提交评论