黄凡Java语言邮件发送软件设计方案.docx
- 文档编号:13851717
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:17
- 大小:183.20KB
黄凡Java语言邮件发送软件设计方案.docx
《黄凡Java语言邮件发送软件设计方案.docx》由会员分享,可在线阅读,更多相关《黄凡Java语言邮件发送软件设计方案.docx(17页珍藏版)》请在冰点文库上搜索。
黄凡Java语言邮件发送软件设计方案
基于JAVA语言邮件发送软件设
黄凡,物理与电子信息学院
摘要:
随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信方式之一。
基于JavaMail的邮件收发系统就是利用JavaMail开发包的高级应用和E-Mail的相关协议开发出功能相对简单,实用、方便、快捷的邮件收发系统。
主要用于帮助用户将邮件发送给SMTP服务器和从POP3邮件服务器读取用户的电子邮件。
本文就是结合SMTP以及POP3协议的实现原理、相关JavaMailAPI帮助文档以及相关参考书,实现了一个工作在PC下的邮箱客户端程序。
关键词:
SMTP协议;POP3协议;JavaMailAPI
ThedesignofsoftwarebasedonJAVAlanguagetosendmail
HuangFan,CollegeofPhysicsandElectronicInformation
Abstract:
Abstract:
withthedevelopmentofInternettechnologyandnetworkoffice,e-mailhasbecomeoneofmaincommunicationmode.TheJavaMailmailsystemusingadvancedE-MailapplicationandJavaMaildevelopmentkitsrelevantagreementstodeveloprelativelysimplefunctionbasedone-mailsystem,practical,convenient,fast.MainlyusedtohelpuserstosendamessagetoaSMTPserverandtheservertoreadfromthePOP3mailuseremail.ThispaperisthecombinationofSMTPandPOP3protocolimplementationprinciple,relatedJavaMailAPIhelpdocumentationandreferencebooks,therealizationofaworkinPCe-mailclientprogram.
Keywords:
SMTPprotocol。
POP3protocol。
JavaMailAPI
1引言
电子邮件electronicmail,简称E-mail又称电子信箱、电子邮政,它是一种用电子手段提供信息交换的通信方式。
也是全球多种网络上使用最普遍的一项服务。
这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速的方法。
进入国际互连网的用户可以方便的使用电子邮件,而且不用任何纸张,就可以方便的写、寄、读、转发信件,而且它不论地球的任何区域,只要他在网内就可以进行转发,而不受任何时间的限制。
利用电子邮件还可以实现文件的传输、电子杂志的订阅,进行学术讨论,举行电子会议或者查询信息。
本文使用Eclipse作为开发工具,结合SMTP、POP3等协议,开发出一个电子邮件发送端应用程序。
2JavaMailAPI与电子邮件收发协议
2.1JavaMailAPI的简介
1)JavaMail支持的协议类型:
简单邮件传输协议SMTP:
SimpleMailTransferProtocol定义了应用程序发送电子邮件的规范,它是通过TCP/IP协议,提供一种可靠且有效电子邮件传输的协议,实现客户端与服务器端的连接与通信,在实际的邮件发送过程中,基于STMP规则的邮件发送程序与局域网或互联网中的电子邮件服务器进行数据信息交换,将用户的电子邮件数据文件发送至邮件服务器中。
此外在邮件接受程序的设计中,JavaMail还支持POP3协议(邮局协劝和IMAP协议Internet邮件访问协议>。
2)JavaMailAPI介绍:
JavaMailAPI的开发是SUN为Java开发者提供公用API框架的持续努力的良好例证,提倡公用框架,反对受限于供应商的解决方案,充分预示着一个日益开放的开发环境的建立。
JavaMailAPI针对电子邮件的封装、分发和接受等均定义了相应的对象,这些对象中定义方法在执行过程中依赖于具体的邮件传输协议,以及网络系统中邮件服务器支持的邮件管理协议类型。
一般情况下,在Eclipse中,电子邮件程序的编写是主要是利用Javajdk1.7扩展包JavaMailAPI等及相关的SMTP等通信协议来实现的。
随着现代软件业的发展,Java提供了方便、简易、与服务器无关且稳固的电子邮件处理组件,使我们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程序。
JavaMail便是一个很好的电子邮件程序开发扩展组件。
JavaMailAPI是读取、撰写、发送电子信息的可选包。
我们可用它来建立如Eudora、Foxmail、MSOutlookExpress一般的邮件用户代理程序 而不是像sendmail或者其它的邮件传输代理 从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。 JavaMail核心类: Session、Message、Address、Authenticator、Transport、Store和Folder。 Session类: 定义了基本的邮件会话。 就像Http会话那样,进行收发邮件的工作都是基于这个会话的。 Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。 Message类: 当建立了Session对象后,便可以被发送的构造信息体了。 在这里SUN提供了Message类型来帮助开发者完成这项工作。 由于Message是一个抽象类,大多数情况下,使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的邮箱信息。 信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。 Address类: 像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。 Authenticator类: 像类那样,JavaMailAPI通过使用授权者类 在javax.mail包中可以找到这个JavaMail的授权者类 Transport类: 在发送信息时,Transport类将被用到。 这个类实现了发送信息的协议<通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send(>来发送消息: Transport.send(message>。 Store和Folder类: 接收邮件和发送邮件很类似都要用到Session。 但是在获得Session后,需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储邮件的邮件服务器。 在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。 2.2SMTP协议简介及通讯模型 SMTP是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。 通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。 SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。 SMTP是一种提供可靠且有效电子邮件传输的协议。 SMTP是建模在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。 SMTP独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。 SMTP重要特性之一是其能跨越网络传输邮件。 通常,一个网络可以由公用互联网上TCP可相互访问的主机、防火墙分隔的TCP/IP网络上TCP可相互访问的主机,及其它LAN/WAN中的主机利用非TCP传输层协议组成。 使用SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。 在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。 域名服务系统 SMTP在传输文件过程中使用25号端口,可大致用下面的图2.1来表示: 图2.1SMTP通信模型 2.3POP3协议简介 POP3,全名为“PostOfficeProtocol-Version3”,即“邮局协议版本3”。 是TCP/IP协议族中的一员,协议默认端口是110,适用的构架结构是C/S,由RFC1939定义。 它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。 它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机<即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。 POP协议支持“离线”邮件处理。 其具体过程是: 邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。 这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。 一旦邮件发送到PC机或MAC上,邮件服务器上的邮件将会被删除。 但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。 POP3协议有三种状态: 认正状态,处理状态,更新状态。 命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用。 客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转入处理状态;在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。 状态间的转移如下所示: 等待连接身份确认quit命令 C——|认证|—————|处理|——————|更新|----S |__________________________________| 重返认证状态。 3概要设计 3.1系统的总体结构框图<类图) 每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器。 发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器 邮局服务器识别接收者的地址,并向管理该地址的邮件服务器 本文使用免费提供的POP服务,直接使用注册的账号密码登陆服务器向目的地址发送邮件。 POP协议具体过程是: 邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。 这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。 一旦邮件发送到PC机或MAC上,邮件服务器上的邮件将会被删除。 图3.1系统的总体结构框图 3.2系统模块结构 电子邮件客户端主要由以下两个模块构成: 发送邮件模块、用户登入。 其功能模块如图3.2所示: 图3.2系统功能模块图 1)用户登入: 当邮箱跟密码正确的时候才可以登入进去。 2)发送邮件模块: 邮件正文写好后然后点发送。 3.3类的功能设计 3.3.1用户登入类 关键变量: privateJPanelmailPanel=newJPanel(>。 privateJPanelpasswordPanel=newJPanel(>。 privateJPanelmailLoginPanel。 privateJComboBoxjComBox。 privateJLabelmaitLabel。 privateJLabelmailPasswordLable。 privateJTextFieldmailText。 privateJPasswordFieldpasswordText。 关键方法: Stringmail=mailText.getText(>。 Stringpassword=passwordText.getText(>。 3.3.2邮件发送类 关键变量: privateJLabelsubject。 //邮件主题 privateJLabelmainContent。 //邮件正文 privateJLabeladdress。 //目的邮箱 privateJTextFieldsubjectText。 privateJTextAreacontentText。 privateJTextAreaaddText。 privateJPanelsubjectPanel。 privateJPanelcontentPanel。 privateJPaneladdressPanel。 privateJButtonsendButton。 privateJButtonsendSuccess。 privateJButtonsendAgain。 关键方法: publicstaticvoidsend(Stringmail,Stringpassword,String[]receivers,Stringsubject,StringmailContent,Stringmimetype>{ send(receivers,subject,mailContent,mimetype>。 } /** *发送邮件 *@paramreceivers收件人 *@paramsubject标题 *@parammailContent邮件内容 *@parammimetype内容类型默认为text/plain,如果要发送HTML内容,应设置为text/html */ publicstaticvoidsend(Stringreceiver,Stringsubject,StringmailContent,Stringmimetype>{ send(newString[]{receiver},subject,mailContent,mimetype>。 } /** *发送邮件 *@paramreceivers收件人 *@paramsubject标题 *@parammailContent邮件内容 *@parammimetype内容类型默认为text/plain,如果要发送HTML内容,应设置为text/html */ publicstaticvoidsend(String[]receivers,Stringsubject,StringmailContent,Stringmimetype>{ send(receivers,subject,mailContent,null,mimetype>。 } /** *发送邮件 *@paramreceivers收件人 *@paramsubject标题 *@parammailContent邮件内容 *@paramattachements附件 *@parammimetype内容类型默认为text/plain,如果要发送HTML内容,应设置为text/html */ 3.4邮件发送流程图 邮件发送流程图如图3.4,发送邮件时会对邮件以及账号进行处理和验证。 当账号跟密码都符合的时候,然后点击发送,邮件就发出去了。 假如账号跟密码不正确的话,邮件就发送失败。 图3.4邮件发送流程图 4功能模块的实现 4.1程序主界面的实现 本次设计中,主要用到对话框Java图形界面。 Java图形界面是实现应用程序人机交互的重要组成部分。 它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。 主界面有对应的按钮,方便用户使用。 关键代码如下: 首先构造客户端面板,定义以下几个需要的界面和按钮 maitLabel=newJLabel("邮箱">。 mailPasswordLable=newJLabel("密码">。 subject=newJLabel("邮件主题">。 mainContent=newJLabel("邮件正文">。 address=newJLabel("目的邮箱">。 sendButton=newJButton("发送">。 其次将其安排到客户端面板上相应位置 container.add(mailLoginPanel,BorderLayout.NORTH>。 container.add(contentPanel,BorderLayout.CENTER>。 container.add(addressPanel,BorderLayout.SOUTH>。 图4.1程序主界面实现图 4.2邮件发送的实现 首先进入主界面,在主界面输入邮箱、密码、邮件主题、邮件正文和目的邮箱,然后点发送,假如邮箱账号跟密码都正确的话就可以发送邮件,否则就发送不成功。 1)获取收件人账号<程序会检测输入账号合法性)。 关键代码: Stringmail=mailText.getText(>。 Stringpassword=passwordText.getText(>。 //SMTP服务器需要验证: props.put("mail.smtp.host","">。 //Smtp props.put("mail.smtp.auth","true">。 2>获取账号设置界面中用户输入的账号和密码传入服务器。 关键代码: //传入用户名和口令: Sessionsession=Session.getDefaultInstance(props,newAuthenticator(>{ protectedPasswordAuthenticationgetPasswordAuthentication(>{ returnnewPasswordAuthentication("705048972@","880722">。 session.setDebug(true>。 3>邮件发送成功的提示 关键代码: sendSuccess=newJButton("发送成功! ! ">。 sendSuccess.setBackground(Color.red>。 sendSuccess.setVisible(false>。 5程序测试 5.1主界面测试 本次设计中,主要用到对话框Java图形界面。 Java图形界面是实现应用程序人机交互的重要组成部分。 它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。 主界面有对应的按钮,方便用户使用,如图所示: 图5.1主界面测试 5.2发送电子邮件程序测试 在上一步已经测试了账号输入,然后再收件人地址输入框中输入“huangfan@”。 接下来在主题输入框中输入“邮件测试”,正文中输入“黄凡0908322”,最后点击发送,当邮件发送成功会在发送旁边返回“发送成功”的信息。 如图为测试邮件发送成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言 邮件 发送 软件设计 方案
![提示](https://static.bingdoc.com/images/bang_tan.gif)