2022年黄凡Java语言邮件发送软件设计方案

上传人:ni****g 文档编号:567299664 上传时间:2024-07-19 格式:PDF 页数:12 大小:374.49KB
返回 下载 相关 举报
2022年黄凡Java语言邮件发送软件设计方案_第1页
第1页 / 共12页
2022年黄凡Java语言邮件发送软件设计方案_第2页
第2页 / 共12页
2022年黄凡Java语言邮件发送软件设计方案_第3页
第3页 / 共12页
2022年黄凡Java语言邮件发送软件设计方案_第4页
第4页 / 共12页
2022年黄凡Java语言邮件发送软件设计方案_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《2022年黄凡Java语言邮件发送软件设计方案》由会员分享,可在线阅读,更多相关《2022年黄凡Java语言邮件发送软件设计方案(12页珍藏版)》请在金锄头文库上搜索。

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

2、Mail API The design of software based on JAVA language to send mail Huang 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 E

3、-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 combinat

4、ion 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 API 1 引言电子邮件 electronic mail,简称 E-mail 又称电子信箱、电子邮政,它是一种用电子手段提供信息交换的通信方式。也是全球多种网

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

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

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

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

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

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

11、的方式访问那些受到保护的资源,在这里“ 资源” 就是指邮件服务器。在javax.mail 包中可以找到这个JavaMail 的授权者类Authenticator)。Transport 类:在发送信息时, Transport 类将被用到。这个类实现了发送信息的协议 来发送消息: Transport.send(message 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 12 页3 / 12 Store 和 Folder 类:接收邮件和发送邮件很类似都要用到Session 。但是在获得 Session后,需要从 Session中获取特定

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

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

14、。在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。 SMTP 在传输文件过程中使用25 号端口,可大致用下面的图 2.1来表示:图 2.1 SMTP 通信模型用户发送 SMTP 文件系接收 SMTP 文件系SMTP 命令邮件内容应答精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 12 页4 / 12 2.3POP3 协议简介POP3,全名为“ Post Office Protocol - Version 3”,即“邮局协议版

15、本3”。是TCP/IP 协议族中的一员,协议默认端口是110 ,适用的构架结构是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 服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的邮件服务器 检查错误,如有错误,提交错误报告有 多 个 目的地址只 有 一个 目 的地址有附件EmailClinet 填 写 发 件 人 和收 件 人 地

18、址 ,标 题 , 正 文 ,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 12 页6 / 12 图 3.2 系统功能模块图1)用户登入:当邮箱跟密码正确的时候才可以登入进去。2)发送邮件模块:邮件正文写好后然后点发送。3.3 类的功能设计3.3.1 用户登入类关键变量:private JPanel mailPanel = new JPanel( 。private JPanel passwordPanel=new JPanel(。private JPanel mailLoginPanel 。privateJComboBox jComBo

19、x。private JLabel maitLabel。private JLabel mailPasswordLable 。private JTextField mailText。private JPasswordField passwordText 。关键方法:String mail=mailText.getText( 。String password=passwordText.getText( 。3.3.2 邮件发送类关键变量:private JLabel subject 。/邮件主题private JLabel mainContent 。/邮件正文private JLabel addres

20、s 。/目的邮箱private JTextField subjectText。private JTextArea contentText。private JTextArea addText。private JPanel subjectPanel 。private JPanel contentPanel 。private JPanel addressPanel 。private JButton sendButton 。电子邮件发送端程序用户登入发送邮件精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 12 页7 / 12 private J

21、Button sendSuccess 。private JButton sendAgain 。关键方法: public static void send(String mail,String password,String receivers, String subject, String mailContent, String mimetype send(receivers, subject, mailContent, mimetype 。/* * 发送邮件 * param receivers 收件人* param subject 标题 * param mailContent 邮件内容* p

22、aram 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 receivers 收件人* param subject 标题 * param mailContent 邮件内容* param mim

23、etype 内容类型默认为 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 收件人* param subject 标题 * param mailContent 邮件内容* param attachements

24、 附件* param mimetype 内容类型默认为 text/plain, 如果要发送HTML 内容,应设置为 text/html */ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 12 页8 / 12 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(mailLoginPan

26、el,BorderLayout.NORTH。container.add(contentPanel,BorderLayout.CENTER 。container.add(addressPanel,BorderLayout.SOUTH 。密码发送发送成功密码正确发送失败密码不正确邮箱精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 12 页9 / 12 图 4.1 程序主界面实现图4.2 邮件发送的实现首先进入主界面,在主界面输入邮箱、密码、邮件主题、邮件正文和目的邮箱,然后点发送,假如邮箱账号跟密码都正确的话就可以发送邮件,否则就发送不成功

27、。1)获取收件人账号 。String password=passwordText.getText( 。/ SMTP服务器需要验证:props.put(mail.smtp.host, 。/Smtp props.put(mail.smtp.auth, true。2获取账号设置界面中用户输入的账号和密码传入服务器。关键代码:/ 传入用户名和口令:Session session = Session.getDefaultInstance(props, new Authenticator( protected PasswordAuthentication getPasswordAuthentication

28、( return new PasswordAuthentication(,880722 。session.setDebug(true 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 12 页10 / 12 3邮件发送成功的提示关键代码:sendSuccess=new JButton( 发送成功! 。sendSuccess.setBackground(Color.red。sendSuccess.setVisible(false 。5 程序测试5.1 主界面测试本次设计中 ,主要用到对话框 Java 图形界面。 Java 图形界面是实现应

29、用程序人机交互的重要组成部分。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。主界面有对应的按钮,方便用户使用,如图所示:图 5.1 主界面测试5.2 发送电子邮件程序测试在上一步已经测试了账号输入,然后再收件人地址输入框中输入“ ”。接下来在主题输入框中输入“邮件测试”,正文中输入“黄凡 0908322”,最后点击发送,当邮件发送成功会在发送旁边返回“发送成功”的信息。如图为测试邮件发送成功。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 12 页11 / 12 图 5.2a )发送电子邮件程序测试面图 5.2b )发

30、送电子邮件程序测试面结论电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当要寄一个包裹时,首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当发送电子邮件时,这封邮件是由邮件发送服务器和POP3(Post Office Protocol,邮局协议3,使用实现注册好的邮件账号和密码进行登陆和验证; 3.验证成功后,将之前写好的邮件通过服务器发送到目的地址;4.发送成功,否则返回错误报告。参考文献1谢希仁 . 计算机网络 . 第五版 M .北京:电子工

31、业出版社,2008. 1 2耿祥义,张跃平. Java大学实用教程. 第二版 M .北京 : 电子工业出版社,2005. 53王勇,代桂平. 计算机网络课程设计M . 北京:清华大学出版社,2009. 6 4王伟 .基于 JavaMail API 的邮件服务的开发及实现J. 现代计算机 , 2004, (1: 73-765( 美埃史尔 . Java编程思想 ( 第 4版. 机械工业出版社. 2007 6陈海山 . 深入 Java Servlet 网络编程 M .北京:清华大学出版社,2002. 2 7Karl Moss . Java Servlet 开发人员指南 M . 北京:清华大学出版社,20028 Liang , Y.D . Java语言程序设计基础篇. 机械工业出版社, 2006 9刘晓华 . 精通 Java 核心技术 . 电子工业出版社, 2003 10Bruce Eckel . Thinking in JavaM . Upper Saddle River , New Jersey, USA : Prentice Hall , 2006 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 12 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号