基于JavaMail的邮件收发系统
基于JavaMail的邮件收发系统
摘 要
电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。SMTP(简单邮件传输协议)是专门用来发送邮件的。POP(邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。
本文主要可分为四个部分。第一部分介绍了Javamail邮件系统的意义和现状。第二部分具体介绍了几种相关协议和Javamail API。第三部分主要介绍了系统的开发工具JAVA语言、Eclipse及其安装过程与配置方法。第四部分详细阐述了Javamail邮件收发系统的实现过程。
关键词:SMTP,POP,JAVAMAIL,邮件收发
目录
基于JavaMail的邮件收发系统
第一章 绪 论
第二章 相关邮件协议和JavaMail API
第三章 应用系统开发工具
第四章 JavaMail系统的实现
第五章 结语
参考文献
致 谢
第一章绪 论
本文是一项基于JavaMail的邮件系统的综合性研究,使用Sun公司提供的JavaMail API实现电子邮件的发送、电子邮件的接收等等功能。
1) 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。
电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。
随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社
基于JavaMail的邮件系统让你不在为机器配置担忧,而且还为用户的邮件安全分担忧愁。
日前,基于JavaMail邮件系统的发展越来越成熟。多线程的设计方法,大大的提高了系统的通信效率和成本;采用MVC设计模式的邮件系统还大大的减少了系统的维护量。
当然,基于JavaMail的邮件系统缺乏对动态页面的支持能力,没有集成有效地数据库处理功能,也存在系统扩展性差、数据处理速度稍慢等缺点。但是,这些问题已经有了很好的起步,将不再是大的问题。
现在的邮件服务器在安全防护技术上有了较大的提高,包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过滤、安全审计等的多项安全技术在邮件服务器中都得到了很好的应用。
- Unix式的平台
在Unix平台下以Sendmail的资格最老,但是由于Unix系统是开发源代码的,所以导致Sendmail有不少代码缺陷和漏洞,如有些代码缺陷可以让攻击者远程地利用红帽子或SlackwareLinux软件的计算机,APP漏洞,即用sendmail系统的APP漏洞能够取得root权限。
- Winodws式的平台
在windows领域种类繁多的邮件服务器中,微软的Exchange排在首位,但是它存在着以下问题:
- 该系统只能运行在Windows NT上,而WinNT本身的不可靠、不稳定决定了Exchange Server的不稳定、不可靠。
- Exchange Server具有严重的内存泄漏问题,随着系统运行时间的增加会越来越慢,平均至少要一周重启一次。
- Windows NT系统面临着巨大的病毒感染隐患,一旦Exchange Server感染病毒,会造成Exchange Server本身的瘫痪,感染速度惊人。杀毒软件只会“亡羊补牢”。
- Exchange Server对邮件账户的支持是非常有限的,一般超过200个用户是系统就会效率低下,提升性能只能依靠昂贵的硬件。
- Exchange Server自身安全防范较弱,容易被外界利用来转发邮件,甚至冒充内部人员发送垃圾邮件。
- Exchange Server维护困难,拥有成本高,每个用户需交纳10美元许可费。
除了Exchange外,Lotus Notes基本上还是一套OA和工作流系统,其邮件功能十分有限。国内用户反映的问题[3]主要有:
- 邮件系统经常不能正常收发,需频繁的重启动服务器或清理邮件系统。
- 经常被外界利用来转发邮件。
- 不能和部分邮件系统很好兼容,系统收到的263和163信箱的邮件显示为乱码,收不到hotmail的邮件。
- OA功能丰富,但是邮件系统不够可靠,效率低,超过300人时,收信速度明显变慢。
- 拥有成本高,每个用户的成本是21美元,比Exchange Server还贵。
邮件系统市场是个刚刚形成的市场,格局还有很大的变数。同时企业用户对邮件系统产品的各项性能不太熟悉,在对邮件系统的好坏没有很清晰的评判标准时,往往很注重系统提供商的成功案例,也就是系统提供商的业界背景。企业购买邮件系统主要是为了提高办公效率,所以力图控制成
本。用户需要更标准的产品以减小整体拥有成本。产品整体化可为企业维护降低成本,但需要更容易定制化来满足用户个性化需求。另外,不同的ISP[4]需要个性化的标志以区别同类产品,价格和产品性能同为企业用户购买时的重要参照。
电子邮件系统应该具备无限的扩展能力,Internet网络的一个特性是变化无常,我们需要应对随
时而来的应用尖峰。因此,我们需要电子邮件系统具有无限的可扩展能力,这个能力主要体现在邮件的处理能力和邮件的存储能力上。为了能够使邮件的处理能力可以无限扩展,就需要引入集群和负载均衡技术,使应用平台可以在需要的时候无限扩充,满足长期或临时的业务需要。为了便于邮件存储,需要高性能的邮件存储解决方案,最为理想的应该是SAN技术在邮件服务器领域的应用。
总之,电子邮件是一项系统工程,需要网络、数据存储、数据库、操作系统等技术的支持。因此电子邮件系统的每一次技术革新都是在其他技术发展的基础之上的。
第二章 相关邮件协议和JavaMail API
邮件的传送要依赖于具体的传输协议,主要有:SMTP、POP3、MIME。
Session类的构造方法是私有的,所以我们可以使用Session类提供的getDefaultInstance()这个静态工厂方法获得一个默认的Session对象:
或者使用getInstance()这个静态工厂方法[8]获得自定义的Session:
MimeMessage message = new MimeMessage(session);
注意:对于MimeMessage类来讲存在着多种构造方法,比如使用输入流作为参数的构造方法。
如果要在邮件地址后面增加名字的话,可以通过传递两个参数:代表邮件地址和名字的字符串来建立一个具有邮件地址和名字的邮件地址类:
本文在这里所讲的邮件地址类是为了设置邮件信息的发信人和收信人而准备的,在建立了邮件地址类后,我们通过message的setFrom()和setReplyTo()两种方法设置邮件的发信人:
若在邮件中存在多个发信人地址,我们可用addForm()方法增加发信人:
为了设置收信人,我们使用addRecipient()方法增加收信人,此方法需要使用Message.RecipientType的常量来区分收信人的类型:
message.addRecipient(type, address)
下面是Message.RecipientType的三个常量:
因此,如果我们要发送邮件给总统,并发用一个副本给第一夫人的话,下面的方法[10]将被用到:
JavaMail API并没有提供检查邮件地址有效性的机制。当然我们可以自己完成这个功能:验证邮件地址的字符是否按照RFC822规定的格式书写或者通过DNS服务器上的MX记录验证等。
下面代码片断中的MyAuthenticator就是一个Authenticator的子类。
(6)Folder和Store :Store类实现特定邮件协议上的读、写、监视、查找等操作。通过javax.mail.Store类可以访问javax.mail.Folder类。
Folder类用于分级组织邮件,并提供javax.mail.Message格式访问e-mail的能力。
对于阅读邮件来说,首先要获取一个会话,然后获取并连接到一个相应的用于您的收件箱的存储上,接着打开相应的文件夹,再获取消息。同时,不要忘记了操作完成后关闭连接。
- 创建一个Properties 对象,Session 对象通过Properties 对象来接受选项,在这种情况下,没有选项,但仍然需要Properties 对象。
- 创建Session 对象,并不直接对Session 实例化,而是通过调用getDefaultInstance
- 使用Session.getStore 来获取服务器的POP3存取,也可以指定IMAP。
- 使用store.connect 来创建一个从store 对象到实际服务器上的活连接。
- 用store.getFolder 找到INBOX(收件箱)文件夹(POP3 存储里唯一的文件夹),对IMAP 服务器而言,可以访问不同的文件夹。用folder.open 以只读方式打开文件夹。
- folder.getMessages 获得一组消息,这个数组效率高,因此它仅当需要结果传输数据。使用JavaMail 获取邮件,部分关键代码如下:
(2)发送电子邮件
发送电子邮件消息涉及到获取会话、创建和填充消息并发送消息这些操作。在获取Session 时,通过为要传递的Properties 对象设置mail.smtp.host属性来指定所用的SMTP 服务器。
(3)转发电子邮件
转发消息涉及的内容要稍微多一点,没有一个专门用于转发消息的方法,可以通过处理组成消息的各个部分来创建要转发的消息。一条邮件消息可由多个部分组成,每一部分是一个BodyPart(报文部分),或更特殊一点,在操作MIME 消息时则是MimeBodyPart [11]。不同的报文部分组合到一个称为Multipart 的容器中,或者更特殊一点,是一个MimeMultipart 容器。要转发消息,用户需要创建一个用于消息文本的部分,和用于要转发的消息的第二个部分,并将这两个部分组合成一个Multipart(多个部分)。然后, 可以把这个Multipart添加到一个合适的注明地址的消息中并发送它。
这就是转发消息的过程。要把一条消息的内容复制给另一条消息,只需通过它的ataHandler 类复制即可,它是出自于JavaBeans Activation Framework的一个类。
上面着重分析和探讨基于JavaMail API 的邮件服务系统的设计和实现的相关技术。为系统实际开发过程中充分利用Java 编程语言的开放性、平台无关性等优点,极大地提高了系统的效率和性能。
第三章 应用系统开发工具
本次程序设计所采用的开发环境为:
(1)AMD Athlon(TM),512M内存,80G硬盘
(2)Microsoft® Windows™ XP Professional
(3)The Eclipse Foundation®Eclipse3.4(Java)
(4)Sun® JDK1.5或以上
运行环境为:
(1)Intel® Pentium® 2及以上处理器,32M以上内存,4G以上硬盘
(2)Microsoft® Windows™ 9X/NT操作系统
(3)800*600或以上的屏幕分辨率
(4)确保机器上安装有JDK 1.5或者以上版本
Java 2是SUN公司推出的新一代面向对象的程序设计语言,它是一种简单的面向对象的分布式可移植性能优异的多线程的动态语言。它具有以下的特点:
Java最初是为了对家用电器进行智能化控制而设计的一种语言,因此它特别的简单明了。它的简单性体现在以下三个方面[12]:
①Java的编程风格类似于C++的风格,因此大家都比较熟悉。
②Java中没有C++中的指针和内存管理的概念,可以避免犯C++中的常见错误。
面向对象性可以说是Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似于C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码继承及重用。
Java有很强的网络特性。通过它特有的类,可以方便地处理TCP/IP协议和访问网络资源。它的分布计算的特性正是它得以在网络时代风靡的重要原因。
Java中对应不同的类具有的Exception,正是这些不同的Exception可以防止因为程序员的错误而造成系统的崩溃。
Java不支持指针,因此一切对内存的访问都必须通过对象的实例变量来进行,因此可以有效的
Java的解释器可以生成与系统体系结构无关的字节码指令,一个系统只要安装了Java虚拟机就可以执行Java程序了。
Java的多线程能够保证程序的并行执行。而且同步机制保证了对共享数据的正确操作,方便用户在网络上的实时交互操作,提高系统的处理能力。
3.2 开发工具Eclipse
Eclipse:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。
Eclipse是一种通用工具平台——普遍适用的开放式扩展IDE,它提供了功能丰富的开发环境,允许开发者高效地创建一些能够无缝集成到Eclipse平台中的工具。Eclipse的体系结构[13]为: 底层为JAVA开发环境插件(JDT),插件开发环境(PDE),其他的第三方插件。中层为Eclipse的图形界面(包括——工作台,Jface,SWT),核心为工作空间(workspace)和运行时内核(runtime)。
Eclipse的设计思想是:一切皆为插件。Eclipse的核心是非常小的,其他所有的功能都是以插件的形式附加到这个Eclipse核心之上。这样的功能插件包括他的图形API(称为SWT/JFace)、JAVA开发环境插件(JDT)、插件开发环境(PDE)等。Eclipse还对这些插件的协同工作提供了良好的支持,不仅安装简单,而且还可以无缝结合。
Eclipse对这些插件是动态载入动态调用的。所谓动态就是指,Eclipse启动后要真正用到这个插件时,它才会被调入内存,当插件不再被使用时,它就会被在适当的时候清除出去。因此即使装了一大堆插件在Eclipse里,也不必担心某些不常用的插件白白占着内存。
在安装Eclipse之前,需要先安装JDK(Java Development Kits)。
在JDK安装完成之后,一般需要设置计算机系统的环境变量,以便于其它软件确定JDK的安装位置。在WindowsXP操作系统环境,具体操作步骤如下:
1.选择“开始”菜单中的“控制面板”命令,打开控制面板窗口,双击选择“系统”,打开如图3-1所示的“系统属性”对话框。
2.单击“系统属性”对话框中的“环境变量”按钮,进入图3-2所示的“环境变量”对话框。在该对话框中可以设置只有当前用户登录时才有效的用户变量,也可以设置该系统的所有用户登录时都有效的系统变量。
3.在“环境变量”对话框中单击“新建”按钮,在打开图3-3所示的新建系统变量对话框输入变量名为JAVA_HOME,其环境变量的值应该设置为JDK的安装位置。
5.在“环境变量”对话框中单击“新建”按钮,在打开图3-5所示的新建系统变量对话框中输入变量名为CLASSPATH,其环境变量的值设置为dt.jar和tools.jar的安装位置。
3.3.2 Eclipse的安装
Eclipse是开放源代码的项目,可以到www.eclipse.org 去免费下载Eclipse的最新版本。其中可以选择下载Eclipse SDK,它包括了Eclipse开发环境、Java开发环境、Plug-in开发环境以及所有源代码和文档。
Eclipse在下载完成后,只需要将对应的压缩包文件Eclipse—SDK-3.4.2-win32.zip解压缩到指定位置,即可完成安装。
下载javamail.rar后解压得到两个包:mail.jar和activation.jar,把它导入到所建工程的lib目录下即可。
第四章 JavaMail系统的实现
Javamail API使邮件的发送与接收得到大大的简化。本文所开发的邮件客户端程序是在Eclipse
smtpPop3.pop3host=pop3 邮件服务器地址(如pop3.sina.com.cn )
smtpPop3.smtphost=smtp 邮件服务器地址(如smtp.sina.com.cn)
smtpPop3.address=收发邮件帐户(如xyz@sina.com)
//装载服务器属性,并与服务器建立连接 String smtpHost=null,sendAddress=null,userName=null,password=null; Properties p = new Properties(); try { //从文件中读入相关的服务器属性设置 FileInputStream fileIn = new FileInputStream("smtp.properties"); p.load(fileIn); smtpHost=p.getProperty("smtp.host"); sendAddress=p.getProperty("smtp.address"); userName=p.getProperty("smtp.username"); password=p.getProperty("smtp.password"); fileIn.close(); //创建与服务器的对话 p=new Properties(); p.put("mail.smtp,host",smtpHost); p.put("mail.smtp.auth","true");//设置身份验证为真,如果发邮件时需要身份验证必须设为真 session=Session.getInstance(p,null); session.setDebug(true); } catch (Exception ex) { System.out.println("装载服务器属性出错!"); ex.printStackTrace(); } |
//建构邮件信息 try{ msg=new MimeMessage(session); //处理邮件头部 if(!to.equals("")) msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); if(!cc.equals("")) msg.addRecipient(Message.RecipientType.BCC,new InternetAddress(cc)); msg.setSubject(subject);//设置邮件主题 msg.setFrom(new InternetAddress(sendAddress)); msg.setSentDate(new Date());//设置邮件发送日期 Multipart mp=new MimeMultipart();//创建用于封装邮件的Multipart对象 //处理邮件正文 MimeBodyPart mbp1=new MimeBodyPart(); mbp1.setText(contentArea.getText()); mp.addBodyPart(mbp1); //处理邮件附件 MimeBodyPart mbpAttatch; FileDataSource fds; BASE64Encoder enco=new BASE64Encoder(); String sendFileName=""; if(attatchFiles.size()!=0){ for (int i = 0; i < attatchFiles.size(); i++) { mbpAttatch = new MimeBodyPart(); fds = new FileDataSource(attatchFiles.get(i).toString()); mbpAttatch.setDataHandler(new DataHandler(fds)); //将文件名进行BASE64编码 sendFileName="=?GB2312?B?"+enco.encode(new String(fds.getName().getBytes(),"gb2312").getBytes("gb2312"))+"?="; mbpAttatch.setFileName(sendFileName); mp.addBodyPart(mbpAttatch); } } //封装并保存邮件信息 msg.setContent(mp); msg.saveChanges(); }catch(Exception ex){ System.out.println("构建邮件出错!"); ex.printStackTrace(); } |
4.3.3 创建Transport对象发送邮件,界面如图4-3。
try{ Transport transport=session.getTransport(“smtp”); transport.connect(smtpHost,userName,password); transport.sendMessage(msg,msg.getAlRecipients()); transport.close(); System.ou.t.println(“发送邮件成功!”); } catch(Exception ex) { System.out.println(“发送邮件失败!”);} |
与发送邮件时获取SMTP 服务器属性一样,接收邮件时要从smtpPop3.properties 文件中取得Pop3 服务器信息, 并建立Session 会话。
获取邮件服务器上的邮件夹,并将其以列表形式显示,代码如下[16]:
Class ViewPanel extends Jpanel{ Message message = null;// 用来存放显示的邮件 Vector attachmentFiles = new Vector();//用来存放邮件所带的附件列表 Vector attachmentInutStream = new Vector();//用来存放与附件列表对应的附件数据流 void setMessage(Message message){ this.message = message; mailContentArea.setText(“”);//清空邮件内容显示区域 if(message!= null){ loadHeader();//本类中的方法,用来显示有关邮件头信息 attachmentFiles.clear();//清空邮件附件列表向量,用来存放新邮件的附件列表 attchmentInputStream.clear();//清空,用来存放新邮件的所带附件的数据流 loadBody(message);//本类中的方法,用来解释并显示邮件内容与附件 }} loadHeader()方法用来显示邮件头信息,包括邮件的主题、收件人、发件人。使用Message类getForm()方法、getRecipients()方法和getSubject()方法获取后并将其显示出来。关键代码如下: String form = message.getForm().toString();//获取邮件发件人 String subject = message.getSubject();//获取邮件主题 String to = message.getRecipients(Message.RecipentType.TO)[0].toString(); //获取收件人 |
LoadBody(Part part)方法用来解释并显示邮件内容与附件。方法的入口参数是一个Part 类型的参数, Part 为一个接口, Message 类、BodyPart 类等都实现该方法。调用方法时传入的参数为一个Message 对象。解释邮件的基本思路为:当邮件为Multipart 类型时, 依次取出邮件的各个部分;如果邮件的某个部分不为Multipart 类型, 则该部分应为正文或附件;此时再使用getDisposition()方法进一步判断该部分为正文还是附件, 方法返回值为null 时为正文, 方法返回值为Part.ATTACHMENT 或为Part.INLINE 时为附件。loadBody (Part part) 方法需要用到的类为:javax.mail.internet.MimeBodyPart、javax.activation.FileDataSource、javax.mail.Multipart、javax.mail.MimeMultipart、javax.mail.BodyPart[17]。其中Multipart 类和BodyPart 类是抽象类,MimeMultipart 类和MimeBodyPart 类分别是继承于Multipart 类和BodyPart 类并支持MIME 的实现类, 而FileDataSource 是用来处理附件的类。
用户点击系统主窗体的,删除邮件-按钮后,系统将邮件的表格中当前被选中的邮件删除,并刷新邮件显示表格。其实现代码如下:
其中deleteIndex为被选中邮件在邮件列表中的序号,由邮件显示表格的时间程序获得。
上面使用javamail API所实现的邮件客户端程序具备了一个Email收发系统的基本功能,在此基础上,可以进一步添加其它的功能,比如转发邮件、回复邮件等,使其成为一个功能完善的邮件客户端系统。
第五章 结语
本文首先介绍了电子邮件的工作原理,开发背景以及研究现状,然后介绍了JavaMail邮件系统的开发过程中所涉及的协议,并简单的介绍了JavaMail API中重要的类和JavaMail开发环境以及开发语言Java的特点。在系统的设计过程中,由浅入深的实现了E-mail收发系统的发送、接收功能,等基本功能,并最终实现了各个子模块的整合,形成了简单的基于JavaMail的邮件收发系统。在此基础上,可以进一步添加其它的功能,比如转发邮件、回复邮件等,使其成为一个功能完善的邮件客户系统。
在这次设计实现基于JavaMail邮件系统的过程中,我学到了很多的知识和经验,为学习Java编程提供了一次很好的实践的机会。在此,谢谢我的指导教师以及学校的精心安排与指导。
参考文献
[1]贺文,顾训穰。基于Web的客户端电子邮件系统的实现[J]。计算机工程与应用,2001,(8):56—58。
[2] Java程序设计与应用开发。於东军等编著。清华大学出版社, 2005。
[3]姚伏天,金连甫,潘敏。基于服务器端安全电子邮件系统的设计与实现[J]。计算机科学,2004,31(8):35—38。
[4] Java邮件开发详解。张孝祥。电子工业出版社,2007。
[5]卢秉亮,王玉湘,许莉。基于WINDOWS环境POP3协议邮件接收客户端的实现[J]。沈阳航空工业学院学报,2006,23(3):27—30。
[6]廖丽嵘。基于VB6.0有安全认证的Email客户端软件[J]。中山大学学报论丛,2004,24(3):259—261。
[7] Learning Java。Niemeyer, Patrick., Knudsen, Jonathan。O'Reilly, 2000。
[8] Java program design。Cohoon, James P.,Davidson, Jack W。McGraw-Hill Higher Education, 2004。
[9] Thinking in Java。Eckel, Bruce。Prentice Hall, c2000。
[10] Java高级程序设计。王路群主编。中国水利水电出版社, 2006 。
[11] Java课程设计。黄明, 梁旭, 周绍斌编著。电子工业出版社, 2006。
[12] Java开发与应用教程。王吴迪, 赵枫朝等编著。电子工业出版社, 2006。
[13] Java程序设计大学教程。刘艺等编著。机械工业出版社, 2006。
[14]杨宁。使用Java Mail API实现电子邮件客户端[J]。晋东南师范专科学校学报,2004,21(2):38—40。
[15] Java数据库高级编程宝典。陈天河编著。电子工业出版社, 2005。
[16] Java语言程序设计实训。赵海廷主编。武汉大学出版社, 2005。
[17] 网络编程技术及应用。谭献海等编著。清华大学出版社, 2006。
致 谢
感谢我的父母和亲人,没有您们的包容和支持,就不会有我的今天。
感谢我的导师陶x和x老师,为我们提供丰富的材料,指导我们完成毕业设计。
感谢我的班主任x老师,无论在学习上还是生活上,都给予我莫大鼓励和帮助。
感谢CSDN技术论坛的人们,帮我解决了很多技术性的难题。
感谢621的全体室友们,我们一起走过的日子,我感觉充实又快乐。
感谢我在xx大学的四年里,所经历的一切,无论我走到哪里,我都会记得这是我生命中不可或缺的记忆。
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!
基于JavaMail的邮件收发系统相关推荐
- java pop邮件 源码_[源码和文档分享]基于JavaMail的邮件收发系统
摘 要 电子邮件在当今社会中扮演了一个很重要的角色.越来越多的人在使用它.而且用它的人数势必会继续增加.本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和 ...
- javamail 解码 base64 html格式邮件_[源码和文档分享]基于JavaMail的邮件收发系统
摘 要 电子邮件在当今社会中扮演了一个很重要的角色.越来越多的人在使用它.而且用它的人数势必会继续增加.本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和 ...
- 基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译+文献综述+答辩PPT)
毕业设计(论文) ( 20 届) 论文(设计)题目 基于Javamail的邮件收发系统 作 者 二级学院.专业 班 级 指导教师(职称) 论 文 字 数 论文完成时间 20年月日 基于JavaMail ...
- 基于Javamail的邮件收发系统的设计与开发
基于JavaMail的邮件收发系统 摘 要 电子邮件在当今社会中扮演了一个很重要的角色.越来越多的人在使用它.而且用它的人数势必会继续增加.本文介绍了Javamail邮件收发系统的开发背景,对国内外现 ...
- java毕业设计——基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码)——邮件收发系统
基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Javamail的邮件收发系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...
- 基于jsp邮件收发系统用javamail包
邮件收发系统 用户界面(数据库),登陆(校验),写信,收信,通讯录(数据库),已发邮件. 基于jsp 用javamail包
- 【graceup系列】--基于Java带数字签名的邮件收发系统
公钥和私钥就是俗称的不对称加密方式,使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1.我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到. 2.必须保证是我发送的邮件,不是别 ...
- java电子邮件收发系统,基于Java_Mail的电子邮件收发系统毕业设计
基于Java_Mail的电子邮件收发系统毕业设计 基于 Java Mail 的电子邮件 收发 系统的设计与实现 目 录 第 1 章 概述 ............................... ...
- C#毕业设计——基于C#+asp.net+cs的Web Mail邮件收发系统设计与实现(毕业论文+程序源码)——邮件收发系统
基于C#+asp.net+cs的Web Mail邮件收发系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+cs的Web Mail邮件收发系统设计与实现,文章末尾附有 ...
最新文章
- java随机生成10个不重复的数字,随机生成10个不重复的0-100的数字(实例讲解)
- IntelliJ Idea 常用快捷键 (经过测试)
- CVX学习笔记(转载
- .NET简谈自定义事务资源管理器
- Python抓取妹子图
- python实现扫描二维码图片,返回相关信息
- python烤地瓜实例(深入理解面向对象编程)
- 【刷题】BZOJ 4698 Sdoi2008 Sandy的卡片
- 洛谷P2245 星际导航
- java俄罗斯方块消除算法_Java 俄罗斯方块消行算法
- Python笔记相关
- pandas读取大csv报错:TypeError: ufunc ‘isnan‘ not supported for the input types, and the inputs could not
- (function($){...})(jQuery)、$(function(){ })和$.fn
- python读取图片文字-Python3实现获取图片文字里中文的方法分析
- 今天烧了3个菜之一,炖豆腐
- 人脸检测进阶:使用 dlib、OpenCV 和 Python 检测面部标记
- php post 漏洞_文件包含上传漏洞目录遍历命令执行漏洞
- ezdml 支付mysql 吗_非常好用的一个表设计工具(EZDML)
- C#设计一个简单的计算器,实现两个数的加减乘除和求幂等计算
- 人生就是一个苏醒的过程