版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于JAVA语言邮件发送软件设黄凡,物理与电子信息学院摘 要:随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信方式之一。基于Java Mail的邮件收发系统就是利用JavaMail开发包的高级应用和E-Mail的相关协议开发出功能相对简单,实用、方便、快捷的邮件收发系统。主要用于帮助用户将邮件发送给SMTP服务器和从POP3邮件服务器读取用户的电子邮件。本文就是结合SMTP以及POP3协议的实现原理、相关Java Mail API帮助文档以及相关参考书,实现了一个工作在PC下的邮箱客户端程序。关键词:SMTP协议;POP3协议;Java Mail API The design of
2、 software based on JAVA language to send mailHuang Fan, College of Physics and Electronic InformationAbstract: 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-Mail application and Ja
3、vaMail 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 combination of SMTP and POP3 pro
4、tocol 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支持的协议类型:简单邮件传输协议SMTP:Simple Mail Transfer Protoc
6、ol定义了应用程序发送电子邮件的规范,它是通过TCP/IP协议,提供一种可靠且有效电子邮件传输的协议,实现客户端与服务器端的连接与通信,在实际的邮件发送过程中,基于STMP规则的邮件发送程序与局域网或互联网中的电子邮件服务器进行数据信息交换,将用户的电子邮件数据文件发送至邮件服务器中。此外在邮件接受程序的设计中,JavaMail还支持POP3协议(邮局协劝和IMAP协议Internet 邮件访问协议)。2)JavaMail API介绍:JavaMail API的开发是SUN为Java开发者提供公用API框架的持续努力的良好例证,提倡公用框架,反对受限于供应商的解决方案,充分预示着一个日益开放的
7、开发环境的建立。JavaMail API针对电子邮件的封装、分发和接受等均定义了相应的对象,这些对象中定义方法在执行过程中依赖于具体的邮件传输协议,以及网络系统中邮件服务器支持的邮件管理协议类型。一般情况下,在Eclipse中,电子邮件程序的编写是主要是利用Java jdk1.7扩展包JavaMailAPI等及相关的SMTP等通信协议来实现的。随着现代软件业的发展,Java提供了方便、简易、与服务器无关且稳固的电子邮件处理组件,使我们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程序。JavaMail便是一个很好的电子邮件程序开发扩展组件。JavaMail API是读取、撰写
8、、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。JavaMail核心类:Session、Message、Address、Authenticator、Transport、Store和Folder。Session类:定义了基本的邮件会话
9、。就像Http会话那样,进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。Message类:当建立了Session对象后,便可以被发送的构造信息体了。在这里SUN提供了Message类型来帮助开发者完成这项工作。由于Message是一个抽象类,大多数情况下,使用ernet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用
10、。Address类:像Message一样,Address类也是一个抽象类,所以我们将使用ernet.InternetAddress这个子类。Authenticator类:像类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。Transport类:在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的
11、静态方法send( )来发送消息:Transport.send(message);Store和Folder类:接收邮件和发送邮件很类似都要用到Session。但是在获得Session后,需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储邮件的邮件服务器。在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。2.2 SMTP协议简介及通讯模型 SMTP是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCPIP协议族,它帮助每台计算机在发送或中转信件时
12、找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。SMTP 是一种提供可靠且有效电子邮件传输的协议。SMTP是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。SMTP 独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/I
13、P 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。SMTP在传输文件过程中使用25号端口,可大致用下面的图2.1来表示:用户发送SMTP文件系统接收SMTP文件系统SMTP命令邮件内容 应答 图2.1 SMTP通信模型2.3 POP3协议简介POP3,全名为“Post
14、Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,协议默认端口是110 ,适用的构架结构是C/S,由RFC 1939 定义。它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。POP 协议支持“离线”邮件处理。其具体过程是:邮件
15、发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。POP3协议有三种状态:认正状态,处理状态,更新状态。命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用。客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转
16、入处理状态;在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。状态间的转移如下所示:等待连接身份确认quit命令 C|认证|处理|更新|-S |_| 重返认证状态。 3概要设计3.1系统的总体结构框图(类图)每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。本文使用免费提供的POP服务,直接使用注册的账号密码登陆服务器向目的地
17、址发送邮件。POP 协议具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件服务器上的邮件将会被删除。EmailSender在程序中绑定发件人,收件人地址,标题,正文,附件验证成功后,根据所填写的地址,每间隔一秒.将邮件发送到各个目的邮箱验证成功后,自动填写附件名,将附件封包,根据所填写的地址,将邮件发送到目的邮箱验证成功后,根据所填写的地址,将邮件发送到目的邮箱PropertiesPasswo
18、rdAuthentication使用的pop和stmp服务器以及将账号密码进行登陆验证catch (Exception e)检查错误,如有错误,提交错误报告有多个目的地址只有一个目的地址有附件EmailClinet填写发件人和收件人地址,标题,正文,附件 图3.1 系统的总体结构框图3.2系统模块结构电子邮件客户端主要由以下两个模块构成:发送邮件模块、用户登入。其功能模块如图3.2所示:电子邮件发送端程序用户登入发送邮件 图3.2 系统功能模块图1)用户登入:当邮箱跟密码正确的时候才可以登入进去。2)发送邮件模块:邮件正文写好后然后点发送。3.3类的功能设计3.3.1用户登入类关键变量:pri
19、vate 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();String
20、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 JPanel address
21、Panel;private JButton sendButton;private JButton 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 receive
22、rs 收件人* 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); /* 发送邮件 * p
23、aram 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); /* 发送邮件
24、 * param receivers 收件人* param subject 标题 * param mailContent 邮件内容* param attachements 附件* param mimetype 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html */3.4邮件发送流程图邮件发送流程图如图3.4,发送邮件时会对邮件以及账号进行处理和验证。当账号跟密码都符合的时候,然后点击发送,邮件就发出去了。假如账号跟密码不正确的话,邮件就发送失败。密码发送发送成功密码正确发送失败密码不正确邮箱图3.4 邮件发送
25、流程图4功能模块的实现4.1程序主界面的实现本次设计中,主要用到对话框Java图形界面。Java图形界面是实现应用程序人机交互的重要组成部分。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。主界面有对应的按钮,方便用户使用。 关键代码如下:首先构造客户端面板,定义以下几个需要的界面和按钮maitLabel=new JLabel("邮箱");mailPasswordLable=new JLabel("密码");subject=new JLabel("邮件主题");mainContent=new JLabel("邮
26、件正文");address=new JLabel("目的邮箱");sendButton=new JButton("发送");其次将其安排到客户端面板上相应位置container.add(mailLoginPanel,BorderLayout.NORTH);container.add(contentPanel,BorderLayout.CENTER);container.add(addressPanel,BorderLayout.SOUTH);图4.1 程序主界面实现图4.2邮件发送的实现首先进入主界面,在主界面输入邮箱、密码、邮件主题、邮件正文
27、和目的邮箱,然后点发送,假如邮箱账号跟密码都正确的话就可以发送邮件,否则就发送不成功。1)获取收件人账号(程序会检测输入账号合法性)。 关键代码:String mail=mailText.getText();String password=passwordText.getText();/ SMTP服务器需要验证:props.put("mail.smtp.host", "");/Smtpprops.put("mail.smtp.auth", "true");2)获取账号设置界面中用户输入的账号和密码传入服务器。关键代
28、码:/ 传入用户名和口令:Session session = Session.getDefaultInstance(props, new Authenticator() protected PasswordAuthentication getPasswordAuthentication() return new PasswordAuthentication("","880722");session.setDebug(true);3)邮件发送成功的提示关键代码:sendSuccess=new JButton("发送成功!");sendS
29、uccess.setBackground(Color.red);sendSuccess.setVisible(false);5程序测试5.1主界面测试本次设计中,主要用到对话框Java图形界面。Java图形界面是实现应用程序人机交互的重要组成部分。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。主界面有对应的按钮,方便用户使用, 如图所示:图5.1主界面测试5.2发送电子邮件程序测试在上一步已经测试了账号输入,然后再收件人地址输入框中输入“”。接下来在主题输入框中输入“邮件测试”,正文中输入“黄凡0908322”,最后点击发送,当邮件发送成功会在发送旁边返回“发送成功”的信息。如图为测试邮件发送成功。图5.2(a)发送电子邮件程序测试面图5.2(b)发送电子邮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能穿戴设备压力传感器工程师岗位招聘考试试卷及答案
- 潮玩设计辅助技师考试试卷及答案
- 产后康复技师试卷及答案
- 区域医疗资源整合:线上线下协同策略
- 区域内肾脏检验结果互认标准实施
- 区块链技术在内镜检查数据共享中的风险防控
- 火灾应急管理制度和预案(3篇)
- 海珠降水施工方案(3篇)
- 双电源开关管理制度(3篇)
- 护栏样板施工方案(3篇)
- GB/T 44328-2024七氟异丁腈
- DL∕ T 736-2010 农村电网剩余电流动作保护器安装运行规程
- DL/T 5352-2018 高压配电装置设计规范
- 高一年级语文期中考试试卷
- solidworks入门经典教程课件
- 变电站消防培训课件
- 《中央企业合规管理办法》逐条解读
- 《无线局域网技术与实践》(易丽华)件 模块6 大型WLAN优化
- 跨境电商通关实务(第2版)全套教学课件
- 高三行事历具体安排
- 安徽上尚品茶业有限公司新茶饮、中药提取及食品加工生产线项目环境影响报告表
评论
0/150
提交评论